将字符串从缓冲读取器转换为double

时间:2013-06-19 16:17:56

标签: java

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

"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);


}

}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

你的问题是你没有解析该行,所以它试图将整行解码为double,但它不能。

这是你可以做的事情:

while((line = read.readLine()) != null) 
    {
    score = Double.parseDouble(line.subString(lastIndexOf(' ')+1));
    System.out.println(score);
    }