[英]need help on numberformat exception error
import java.lang.System;
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class SubMat {
public static void main(String[] args) throws IOException {
File file = new File("file1.txt");
List<double[]> list = new ArrayList<double[]>();
Scanner scanner = new Scanner(file).useDelimiter("\n");
while (scanner.hasNext()) {
String[] values = scanner.next().trim().split(" ");
double[] floats = new double[values.length];
for (int i = 0; i < values.length; i++) {
floats[i] = Double.parseDouble(values[i]);
}
list.add(floats);
}
double[][] values = new double[list.size()][];
for (int i = 0; i < list.size(); i++) {
values[i] = list.get(i);
for (int j = 0; j < values[i].length; j++) {
System.out.printf(values[i][j]+" ");
}
System.out.println();
}
int row =values.length;
int col=values[0].length;
}}
可能你在這條線上得到了這個例外
floats[i] = Double.parseDouble(values[i]);
只需打印values[i]可能是 null 或包含任何字符或特殊字符。
快速修復:替換此行
floats[i] = Double.parseDouble(values[i]);
和
try {
floats[i] = Double.parseDouble(values[i]);
} catch (NumberFormatException nfe) {
System.out.println("String can't be parsed to a float value: " + values[i]);
System.exit(); // brutal escape, because if you just continue, you'll have an
// illegal value (0.0) in your array
}
注意- 如果您想忽略非法輸入並繼續,那么您必須使用列表而不是數組。
加法 - 問題可能與此有關,我們看到一個示例輸入文件。 如果這是有問題的輸入,則小數點可能有問題,小數點在該示例文件中是一個“點”,在其他語言環境中可能不同。
你如何在你的系統上寫十進制數, 81.0
或者81,0
? 如果您對小數分隔符使用不同的符號,這里有另一個快速修復(丑得要命,但比解釋語言環境概念更容易......):
floats[i] = Double.parseDouble(values[i].replace('.', ',');
// assuming you need a comma here to parse floats
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.