1

我的任务要求我创建一个程序来读取文本文件并计算其中的值。文本文件包含如下内容:

"11047461 [tab] 60.5

 12024121 [tab] 58

 12027019 [tab] 33"

前面的8个数字被忽略,只计算后面的数字。

在参考了这个网络上的一些编码之后。我仍然收到这样的消息:

Exception in thread "main" java.lang.NumberFormatException: For input string: "11047461 60.5"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
    at java.lang.Double.parseDouble(Double.java:510)
    at Problem2.main(Problem2.java:16)

public static void main(String[] args) throws IOException, FileNotFoundException {
    // TODO Auto-generated method stub
    BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\My World\\Downloads\\PRG102D.txt")));

    String line;
    double score;

    while((line = read.readLine()) != null) {
    score = Double.parseDouble(line);
    System.out.println(score);


}

}
4

2 回答 2

2

您只想解析包含双精度值的字符串表示的行的一部分。实际上,您正在解析整行而不忽略第一个数字。

于 2013-06-19T16:22:08.733 回答
0

您的问题是您没有解析该行,因此它尝试将整行解码为双精度,但它不能。

这是您可以做的事情:

while((line = read.readLine()) != null) 
    {
    score = Double.parseDouble(line.subString(lastIndexOf(' ')+1));
    System.out.println(score);
    }
于 2013-06-19T17:29:52.103 回答