样条插值法(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 ...
随机推荐
- 九、Spring中使用@Value和@PropertySource为属性赋值
首先回顾下在xml中我们是如何为spring的bean进行属性赋值呢? 大体是这样的 <bean id="person" class="com.atguigu.be ...
- PHP 获取星期
<?php function getWeek($time = 0) { $week_array=array('日', '一', '二', '三', '四', '五', '六'); //先定义一个 ...
- 在Linux下,使用Xmanager图形化显示
linux在安装Oracle时,需要图形化展示,本博客将使用xclock显示钟表进行测试 首先需要下载Xmanager网址:http://www.xshellcn.com/ 安装之后 打开之后,点击t ...
- Java开发笔记(一百一十七)AWT窗口
前面介绍的所有Java代码,都只能通过日志观察运行情况,就算编译成class文件,也必须在命令行下面运行,这样的程序无疑只能给开发者做调试用,不能拿给一般人使用.因为普通用户早已习惯在窗口界面上操作, ...
- 20191213-RF中报告打不开提示Opening Robot Framework report failed
配置好Jenkins的RF框架后跑了一次autotest发现哦豁report打不开,网上找了一堆方法都是只能临时解决,重启后又失效了.现在给出临时解决方案和永久解决方案 首先错误信息如下: 临时解决 ...
- 39 多线程(十一)——ThreadLocal
目前阶段,我只能知其然,不能做到知其所以然,这里引用一篇其所以然的文章,为以后理解ThreadLocal做准备: https://www.cnblogs.com/ldq2016/p/9041856.h ...
- xorm - Update,乐观锁,更新时间updated,NoAutoTime()
更新数据使用Update方法 Update方法的第一个参数为需要更新的内容,可以为一个结构体指针或者一个Map[string]interface{}类型. 当传入的为结构体指针时,只有非nil和非0的 ...
- typescript之基础类型
基础类型分为:数字.字符串.数组.元组.枚举.Any.Object.Null.Undefined.Never.Void 各种类型写法如下: 1.数字(number) let num:number = ...
- fastjson框架如何处理boolean?CURRENT_TIMESTAMP使用报错?什么是 ONLINE DDL 及 pt-online-schema-change ? getBytes引起的乱码问题?
一.使用fastjson框架进行序列化时,若莫个参数为Boolean类型,而json里的值是其它类型时,框架如何处理? 1.true, false,正常赋值2.int类型,若为1,则为true,否则为 ...
- WPF内嵌网页的两种方式
在wpf程序中,有时会内嵌网页.内嵌网页有两种方法,一种是使用wpf自带WebBrowser控件来调用IE内核,另一种是使用CefSharp包来调用chrom内核. 一.第一种使用自带WebBrows ...