我正在將文件讀入數組,並試圖取出數字並將它們作爲雙精度數組放入其自己的數組中。顯然我的中間名必須是「錯誤」。從我所能告訴的代碼是好的....至少沒有任何東西跳出來對我。這是它的榮耀。Java:將字符串解析爲雙精度值
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
import java.lang.Object.*;
public class ReadFromFile {
public static void main (String[] args){
File file = new File("vector10.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
StringBuffer sb = new StringBuffer();
String string = new String();
try{
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
while((string=dis.readLine()) != null){
sb.append(string+"\n");
}
fis.close();
bis.close();
dis.close();
System.out.println(sb);
String newString = sb.toString();
System.out.println(newString);
String[] doubles = newString.split(",");
for (int i=0; i<doubles.length; i++){
System.out.println(doubles[i]);
}
Double arrDouble[] = new Double[doubles.length];
int idx = 0;
for(String s : doubles) {
arrDouble[idx++] = Double.parseDouble(s);
}
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
它不斷拋出一個錯誤
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:412)
at java.lang.Long.parseLong(Long.java:461)
at ReadFromFile.main(ReadFromFile.java:51)
編程不一定是我的強項,我的眼睛開始流血看着屏幕。 感謝您的任何想法或提示。 Cheers
根據文檔,Double.parseDouble的行爲與Double.valueOf的行爲相同,只返回double而不是Double,Double.valueOf的文檔聲明:「s中的前導和後綴空白字符被忽略。通過String.trim()方法;也就是說,ASCII空間和控制字符都被刪除。「因此,這個建議似乎是多餘的。 – Jules 2013-07-01 09:17:19
4年前,情況並非如此,所以我很高興在Java類庫中修復了這些問題:-) – Guss 2013-07-01 15:19:46