直接贴出代码:
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();
}
}
}