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


6.在Linux中测试
将jar包和输入文件上传到接口机,执行jar包:
解释: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)--在本地执行的更多相关文章
- Java JDBC下执行SQL的不同方式、参数化预编译防御
相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...
- 怎么优化JAVA程序的执行效率和性能?
现在java程序已经够快的了,不过有时写出了的程序效率就不怎么样,很多细节值得我们注意,比如使用StringBuffer或者StringBuilder来拼接或者操作字符串就比直接使用String效率高 ...
- Android使用JNI(从java调用本地函数)
当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁.JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本 ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
- “Java是编译执行的语言”这句话对吗?
现在让你谈谈对Java平台的理解,你是否会感觉内容过于庞大?这个问题是比较宽泛的,Java发展到现在已经不仅仅是语言这么简单了,Java平台涉及的,包括但不仅限于下面提到的这些内容: Java语言本身 ...
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- [转载]java调用本地dos命令
在社区看到java调用本地dos命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...
- Java调用本地方法又是怎么一回事
JNI JNI即Java Native Interface,它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C++,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C++ 和少 ...
- 1.对Java平台的理解。“Java是解释执行”对吗
Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”,能够非常容易地获得跨平台能力: 另外就是垃圾收集(GC),Java通过垃圾收集器(Garbage Colle ...
随机推荐
- web自动化测试笔记(二)
如何使用selenium工具 上章节介绍了搭建web自动化的环境,这个章节介绍如何使用selenium写自动化脚本. 1.selenium selenium是一个用于web应用程序的测试工具.它可以帮 ...
- Navicat 8 For Mysql 数据库的导出与加载
方便断断续续的数据库实验课,避免每次都要重新写入数据,可使用Navicat的数据库导出功能 数据库的导出 1.选择要导出的数据库,右键点击“转存SQL文件”选项. 2.填写文件名字,选择位置,点击“保 ...
- 【Linux】多线程入门详解
背景知识: 1.每次进程切换,都存在资源的保持和恢复动作,即上下文切换 2.进程的引入虽然可以解决多用户的问题,但是进程频繁切换的开销会严重影响系统性能 3.同一个进程内部有多个线程,这些线程共享的是 ...
- 动态字节码技术Javassist
字节码技术可以动态改变某个类的结构(添加/删除/修改 新的属性/方法) 关于字节码的框架有javassist,asm,bcel等 引入依赖 <dependency> <groupI ...
- K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...
- c++模板使用及常见问题
一.为什么使用模板?? 使用模板的目的是为了避免重复声明和定义一系列基本功能相同的函数或者类,其区别因传入参数的不同而产生不同类型的数据,其基本工作过程都是一致的! 二.调用模板函数产生不明确问题 ( ...
- Python中的数据类型、变量、字符编码、输入输出、注释
数据类型 number(数字) 用于存储类型,通常分为int.long.float.complex: int:32位机器上占32位,取值范围为-231 ~ 231 - 1:64位机器上占64位,取值范 ...
- array_merge_recursive 的使用
作用:递归合并数组 场景:在平时开发中,我们可能遇到获取的数据是多个维度的数据,而我们只需要其中的一个. 代码如下: $project_id = 'project_id'; $arr1 = [ 'pr ...
- ffmpeg 速查手册
ref : http://linux.51yip.com/search/ffmpeg ffmpeg是一个源于Linux的工具软件,是FLV视频转换器,可以轻易地实现FLV向其它格式avi.asf. m ...
- 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证
通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...