首页 > 搜索 > 你在我的夏日txt,样条插值法(Java)-

你在我的夏日txt,样条插值法(Java)-

互联网 2021-06-21 03:06:34

该程序主要实现样条插值的目的,为本地执行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包名称 输入文件 输出文件

 

 

完整代码如下:

 样条插值法:

1 import java.io.BufferedReader;2 import java.io.File;3 import java.io.FileInputStream;4 import java.io.FileNotFoundException;5 import java.io.FileWriter;6 import java.io.IOException;7 import java.io.InputStreamReader;8 import java.io.UnsupportedEncodingException;9 import java.util.ArrayList; 10 import java.util.List; 11 12 import org.apache.commons.lang3.StringUtils; 13 import org.apache.commons.math3.analysis.interpolation.SplineInterpolator; 14 import org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction; 15 16 17 /** 18* 样条插值法 19* @author 91911 20*/ 21 public class SplineInterpolatorImpl { 22 public static void main(String[] args){ 23 //String[] source = new String[]{ 24 //"0%2c1%2c2%2c30%2c1%2c1%2c02.5"%2c 25 //"0%2c1%2c2%2c30%2c1%2c1%2c01.5" 26 //}; 27 // 判断传入参数的长度,必须输入两个参数(输入文件和输出文件),否则报错 28 if (args.length != 2) { 29 System.out.println("请输入原文件和输出文件的路径!!"); 30 System.exit(0); 31 } 32 SplineInterpolatorImpl splineInterpolatorImpl = new SplineInterpolatorImpl(); 33 List source = splineInterpolatorImpl.getFileContent(args[0]); 34 File file = new File(args[1]); 35 //List source = splineInterpolatorImpl.getFileContent("C:/Users/91911/Desktop/test.txt"); 36 //File file = new File("C:/Users/91911/Desktop/result.txt"); 37 for(String s1:source) { 38 String splited[] = s1.split("\t"); 39 double[] x = splineInterpolatorImpl.String2Double(splited[0]); 40 double[] y = splineInterpolatorImpl.String2Double(splited[1]); 41 double z = Double.parseDouble(splited[2]); 42 double result = splineInterpolatorImpl.caculate(x%2c y%2c z); 43 exportFile(s1+"\t"+result%2cfile); 44 //System.out.println(splineInterpolatorImpl.caculate(x%2c y%2c z)); 45 } 46 } 47 48 // 读取配置文档 49 public static List getFileContent(String filepath) { 50 List list = new ArrayList(); 51 BufferedReader br; 52 String rec; 53 try { 54 br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filepath))%2c "GBK")); 55 while ((rec = br.readLine()) != null) { 56 if (StringUtils.isNotEmpty(rec.trim())) { 57 list.add(rec); 58 } 59 } 60 br.close(); 61 } catch (UnsupportedEncodingException e) { 62 // TODO Auto-generated catch block 63 System.out.println("转码出错!"); 64 e.printStackTrace(); 65 return null; 66 } catch (FileNotFoundException e) { 67 // TODO Auto-generated catch block 68 System.out.println("未找到配置文件 " + filepath + " ,请检查该路径是否正确!"); 69 e.printStackTrace(); 70 return null; 71 } catch (IOException e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 return null; 75 } 76 return list; 77 } 78 79 //写文件 80 public static void exportFile(String content%2cFile file){ 81 try { 82 FileWriter out = new FileWriter(file%2ctrue); 83 out.write(content + "\r\n"); 84 out.flush(); 85 out.close(); 86 }catch (IOException e){ 87 System.out.println("!IO异常,写文件异常"); 88 } 89 } 90 //样条计算法 91 public double caculate(double[] x%2cdouble[] y%2c double z){ 92 SplineInterpolator sp = new SplineInterpolator(); 93 PolynomialSplineFunction f = sp.interpolate(x%2c y); 94 return f.value(z); 95 } 96 97 //将字符型转换为double型 98 public static double[] String2Double(String str) { 99 double[] d = { 1 };100 if (str.contains("%2c")) {101 String[] arr = str.split("%2c");102 d = new double[arr.length];103 for (int i = 0; i < arr.length; i++) {104 // System.out.println(arr[i]);105 d[i] = Double.valueOf(arr[i].trim());106 }107 }108 return d;109 }110 }

 

免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

一周热门

查看更多