该程序主要实现样条插值的目的,为本地执行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. SpringBoot系列教程web篇之Beetl环境搭建

    前面两篇分别介绍了目前流行的模板引擎Freemaker和Thymeleaf构建web应用的方式,接下来我们看一下号称性能最好的国产模板引擎Beetl,如何搭建web环境 本文主要来自官方文档,如有疑问 ...

  2. Git的各种工作流

    Git工作流可以理解为团队成员遵守的一种代码管理方案,在Git中有以下几种常见工作流: 集中式工作流 功能开发工作流 Gitflow工作流 Forking工作流 1)集中式工作流 这种工作方式跟svn ...

  3. php位运算及其高级应用

    我们之前学过逻辑与(&&)      条件1 && 条件2 当两边条件同时成立时候返回1 逻辑或(||)         条件1 || 条件2    当两边条件只要有一 ...

  4. 【LEETCODE】48、数组分类,简单级别,题目:189,217,219,268,283,414

    package y2019.Algorithm.array; import java.util.Arrays; import java.util.Stack; /** * @ClassName Rot ...

  5. 深入浅出CAS

    后端开发中大家肯定遇到过实现一个线程安全的计数器这种需求,根据经验你应该知道我们要在多线程中实现 共享变量 的原子性和可见性问题,于是锁成为一个不可避免的话题,今天我们讨论的是与之对应的无锁 CAS. ...

  6. nginx反向代理的一次实践

    场景:前端(VUE.js)应用部署在linux服务器,需要支持http和https访问. 问题1:阿里服务器不支持域名访问? 通过域名绑定服务器解决 问题2:如何通过http访问前端 前端通过ngin ...

  7. [SOJ #112]Dirichlet 前缀和

    题目大意:给定一个长度为$n$的序列$a_n$,需要求出一个序列$b_n$,满足:$$b_k=\sum\limits_{i|k}a_i$$$n\leqslant10^7$ 题解:$\mathrm{Di ...

  8. 阿里云ECS云服务器Linux Tomcat启动慢 访问网页转圈

    状况: 今天购买了一台阿里云云服务器,按照正常的方式安装JDK,mysql,以及Tomcat 这里的版本信息有 系统 :Centos 7 tomcat: apache-tomcat-8.5.45.ta ...

  9. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

  10. 1-redis使用笔记

    1.清空当前redis数据库缓存FLUSHDB flushdb 2.清空整个redis缓存FLUSHALL flushall 3.设置 SET w3ckey redis 4.获取 GET w3ckey ...