该程序主要实现样条插值的目的,为本地执行java文件

该程序包含:样条插值法、读取文件,写入文件,字符型转double型方法等;

适合初学Java的人学习;

首次使用eclipse打jar包,中间很曲折,结果很nice,我把步骤分享下~

该jar包可在本地执行;

1.将你要实现的功能写成通用的格式,最好是输入和输出都以文件的形式;

2.程序写好后,开始打jar包,打jar包步骤

File>export>Runable JAR file>选择你的主类和输出地址>点击完成后会有警告弹出,不用管,继续点击确定就好了;

export

注意点

警告

3.jar包完成后,检查jar包大小,可以右击该jar包,查看jar包大小,如果是2MB左右大小,说明jar包大小没问题,如果是几KB的话,可能jar包就有问题。

成功后的jar包大小

4.jar包完成后,就可以测试了,可以在cmd中测试,也可以在Linux中测试。这两种方法我都试下~

5.cmd测试:

切换到jar包所在位置,执行jar包

java -jar SplineInterpolatorImpl.jar C:\Users\91911\Desktop\test.txt  C:\Users\91911\Desktop\result.txt

解释:java -jar jar包名称 输入文件 输出结果

6.在Linux中测试

将jar包和输入文件上传到接口机,执行jar包:

java -jar SplineInterpolatorImpl.jar test.txt result.txt

解释:java -jar jar包名称 输入文件 输出文件

完整代码如下:

样条插值法:

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.math3.analysis.interpolation.SplineInterpolator;
import org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction; /**
* 样条插值法
* @author 91911
*/
public class SplineInterpolatorImpl {
public static void main(String[] args){
// String[] source = new String[]{
// "0,1,2,3 0,1,1,0 2.5",
// "0,1,2,3 0,1,1,0 1.5"
// };
// 判断传入参数的长度,必须输入两个参数(输入文件和输出文件),否则报错
if (args.length != 2) {
System.out.println("请输入原文件和输出文件的路径!!");
System.exit(0);
}
SplineInterpolatorImpl splineInterpolatorImpl = new SplineInterpolatorImpl();
List<String> source = splineInterpolatorImpl.getFileContent(args[0]);
File file = new File(args[1]);
// List<String> source = splineInterpolatorImpl.getFileContent("C:/Users/91911/Desktop/test.txt");
// File file = new File("C:/Users/91911/Desktop/result.txt");
for(String s1:source) {
String splited[] = s1.split("\t");
double[] x = splineInterpolatorImpl.String2Double(splited[0]);
double[] y = splineInterpolatorImpl.String2Double(splited[1]);
double z = Double.parseDouble(splited[2]);
double result = splineInterpolatorImpl.caculate(x, y, z);
exportFile(s1+"\t"+result,file);
// System.out.println(splineInterpolatorImpl.caculate(x, y, z));
}
} // 读取配置文档
public static List<String> getFileContent(String filepath) {
List<String> list = new ArrayList<>();
BufferedReader br;
String rec;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filepath)), "GBK"));
while ((rec = br.readLine()) != null) {
if (StringUtils.isNotEmpty(rec.trim())) {
list.add(rec);
}
}
br.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println("转码出错!");
e.printStackTrace();
return null;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("未找到配置文件 " + filepath + " ,请检查该路径是否正确!");
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return list;
} //写文件
public static void exportFile(String content,File file){
try {
FileWriter out = new FileWriter(file,true);
out.write(content + "\r\n");
out.flush();
out.close();
}catch (IOException e){
System.out.println("!IO异常,写文件异常");
}
}
//样条计算法
public double caculate(double[] x,double[] y, double z){
SplineInterpolator sp = new SplineInterpolator();
PolynomialSplineFunction f = sp.interpolate(x, y);
return f.value(z);
} //将字符型转换为double型
public static double[] String2Double(String str) {
double[] d = { 1 };
if (str.contains(",")) {
String[] arr = str.split(",");
d = new double[arr.length];
for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
d[i] = Double.valueOf(arr[i].trim());
}
}
return d;
}
}

样条插值法(Java)--在本地执行的更多相关文章

  1. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  2. 怎么优化JAVA程序的执行效率和性能?

    现在java程序已经够快的了,不过有时写出了的程序效率就不怎么样,很多细节值得我们注意,比如使用StringBuffer或者StringBuilder来拼接或者操作字符串就比直接使用String效率高 ...

  3. Android使用JNI(从java调用本地函数)

    当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁.JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本 ...

  4. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

  5. “Java是编译执行的语言”这句话对吗?

    现在让你谈谈对Java平台的理解,你是否会感觉内容过于庞大?这个问题是比较宽泛的,Java发展到现在已经不仅仅是语言这么简单了,Java平台涉及的,包括但不仅限于下面提到的这些内容: Java语言本身 ...

  6. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  7. [转载]java调用本地dos命令

    在社区看到java调用本地dos命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...

  8. Java调用本地方法又是怎么一回事

    JNI JNI即Java Native Interface,它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C++,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C++ 和少 ...

  9. 1.对Java平台的理解。“Java是解释执行”对吗

    Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”,能够非常容易地获得跨平台能力: 另外就是垃圾收集(GC),Java通过垃圾收集器(Garbage Colle ...

随机推荐

  1. 解决ScrollView嵌套百度地图滑动冲突

    一.问题描述 scrollview中嵌套百度地图时会出现滑动冲突,地图无法滑动的情况. 二.期望结果 焦点在地图上时,只有地图移动,焦点在地图外部时,可以滑动scrollview. 三.解决方法 自定 ...

  2. js 打印条形码

    相应的文件大家去github上下载吧 https://github.com/lindell/JsBarcode <!DOCTYPE html> <html> <head& ...

  3. mybatis 一对一 一对多 多对多

    一对一 一对多 多对多

  4. Storm Kafka与配置和代码集成

    1.目标 - 风暴卡夫卡整合 在本Kafka教程中,我们将学习Storm Kafka Integration的概念.此外,我们将在此Kafka Storm集成教程中讨论Storm架构,Storm Cl ...

  5. 简单的python爬虫教程:批量爬取图片

    python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...

  6. AttributeError: module 'select' has no attribute 'epoll'

    AttributeError: module 'select' has no attribute 'epoll'   今天乌班图镜像莫名其妙损坏了,只好用Windows写并发TCP服务器的代码.运行后 ...

  7. 图片url地址的生成获取方法

    在写博客插入图片时,许多时候需要提供图片的url地址.作为菜鸡的我,自然是一脸懵逼.那么什么是所谓的url地址呢?又该如何获取图片的url地址呢? 首先来看一下度娘对url地址的解释:url是统一资源 ...

  8. LOJ6587 WF2019 交通堵塞 CRT、bitset

    传送门 首先设\(P = lcm(r_i + g_i)\),因为\(P \mid 2019!\),所以在\([0,2019!]\)里随机实数相当于在\([0,2019!)\)随机实数,相当于在\([0 ...

  9. GOF 的23种JAVA常用设计模式总结 03 面向对象七大设计原则

    在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率.节约软件开发成本和维护成本. 各位代码界的大佬们总结出的七 ...

  10. C# winform导出数据弹出可修改目录及文件名的窗口

    string localFilePath = "", fileNameExt = "", newFileName = "", FilePat ...