java处理批量科学计数法数据,并排序
来源:互联网 发布:商务通js代码 编辑:程序博客网 时间:2024/06/07 06:43
直接贴出代码:
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Reader {
public static String[] read(String fileName) throws IOException { File file = new File(fileName); int num; StringBuffer sb = new StringBuffer(); if (!file.exists()) { file.createNewFile(); } DataInputStream din = new DataInputStream(new FileInputStream(file)); byte[] data = new byte[1024]; while ((num = din.read(data, 0, 1024)) != -1) { sb.append(new String(data, 0, num)); } return sb.toString().split("s+");}public static ArrayList<String> NumberString(String str) { // 去除收尾空格 str = str.trim(); // 保存分割后的数字 ArrayList<String> array = new ArrayList<>(); boolean start;// 连续数字字符开始的标志 start = false; boolean point = false;// 浮点数标识 boolean negative = false;// 负数标识 boolean addChar = false; //加号标识 boolean scenNum = false;// 科学计数标识 double Num; if (str != null && !("".equals(str))) { StringBuilder number = new StringBuilder();// 暂时保存数字 for (int i = 0; i < str.length(); i++) { if ((str.charAt(i) >= 48 && str.charAt(i) <= 57)) { start = true; if (negative == true) { number = number.append('-'); negative = false; } if (point == true) { number.append('0'); number.append('.'); point = false; } if (addChar == true) { number = number.append('+'); addChar = false; } number = number.append(str.charAt(i)); } else if (str.charAt(i) == '-') { negative = true; } else if (str.charAt(i) == '.') { point = true; } else if (str.charAt(i) == 69) { number = number.append(str.charAt(i)); }else if(str.charAt(i) == '+'){ addChar = true; }else if (str.charAt(i) != 69 || (str.charAt(i) < 48 && str.charAt(i) > 57)) { if (negative == true) { negative = false; } if (point == true) { point = false; } if (addChar == true) { addChar = false; } start = false; if (number.length() != 0) { String temp = number.toString(); number = new StringBuilder(); array.add(temp); } } // 最后一位字符为数字时,需要特殊处理 if (i == str.length() - 1) { if (number.length() != 0) { String temp = number.toString(); number = new StringBuilder(); array.add(temp); } } } } return array;}public static void main(String args[]) { try { String[] array = read("F://RSN1182_CHICHI_CHY006-V.AT2"); ArrayList<String> doubleArray = NumberString(array[0].toString()); ArrayList<Double> praseArrayList = new ArrayList<>(); for (int i = 0; i < doubleArray.size(); i++) { try{ BigDecimal bd = new BigDecimal(doubleArray.get(i).toString()); String temp=bd.toPlainString();//转换为String for (int j = 0; j < temp.length(); j++) { if (temp.charAt(j) == '-') { temp = temp.replace("-", ""); } } praseArrayList.add(Double.parseDouble(temp.toString())); }catch(Exception e){ } } double[] arrayOrder = new double[praseArrayList.size()]; for (int i = 0; i < praseArrayList.size(); i++) { arrayOrder[i] = praseArrayList.get(i); } Arrays.sort(arrayOrder);// 升序排序 for (double i : arrayOrder) { System.out.println(i);// 遍历输出 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }}
}
阅读全文
0 0
- java处理批量科学计数法数据,并排序
- JAVA 科学计数法
- JAVA科学计数法
- java科学计数法
- java科学计数法
- js科学计数法处理
- java、js处理科学计数法的问题
- Java将科学计数法数据转为字符串
- Java将科学计数法数据转为字符串
- Java将科学计数法数据转为字符串
- Java将科学计数法数据转为字符串
- Java将科学计数法数据转为字符串
- Java将科学计数法数据转为字符串
- Java 与科学计数法
- java 取消科学计数法
- java 取消科学计数法
- java取消科学计数法
- java 科学计数法转换
- vs2015打开VS2010的工程时,无法解析的外部符号 __imp___vsnprintf
- 通过注解编实现一个编译器插件(java)
- 第十二周java作业
- angularjs的directive和component的参数传递问题小结(转)
- MySQL必知必会
- java处理批量科学计数法数据,并排序
- jpa多条件查询重写Specification的toPredicate方法
- 如何通过js来打开客户端的应用程序
- 在windows下用pip安装pyspark出错
- Linux 引导过程内幕
- Python科学画图小结
- 指针变量
- 深入理解c语言指针-第二章
- 手机微信内置浏览器清理缓存