2011-11-03 76 views
1

我得到下面这个错误是什么意思列出我的代码错误TXT文件输入错误的Java

Exception in thread "main" java.lang.NumberFormatException: For input string: "scores.txt" 
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222) 
at java.lang.Double.parseDouble(Double.java:510) 
at ExamAverage.main(ExamAverage.java:30) 
C:\Users\Peter\AppData\Local\Temp\codecomp5461808896109186034.xml:312: Java returned: 1 

?我试图从给定的文本文件路径中逐行进行输出,并以某种格式输出。

 import java.io.FileReader; 
     import java.io.FileNotFoundException; 
     import java.util.Scanner; 
     import java.io.PrintWriter; 

     public class ExamAverage 
    { 

    public static void main(String[] args) 
    throws FileNotFoundException 
    { 
    String inputFileName = "scores.txt"; 
    String outputFileName = "examScoreAverage.txt"; 
    Scanner console = new Scanner(System.in); 
    Scanner in = new Scanner(inputFileName); 
    PrintWriter out = new PrintWriter(outputFileName); 
    int TestNumber = 1; 
    double totalPoints = 0; 
    double avg = 0; 
    double test = 0; 

    while (in.hasNextLine()) 
    { 
     String line = in.nextLine(); 
      test = Double.parseDouble(line); 
     out.println("Score" + TestNumber + " : " + test); 
     totalPoints += test; 
     TestNumber++; 
    } 
     avg = totalPoints/TestNumber; 
     out.println("Number of scores read: " + TestNumber); 
     out.println("Average Score " + avg); 
    in.close(); 
out.close(); 

} }

+1

显示'scores.txt'的内容。也许并非文件中的所有行都包含数字,所以'parseDouble'无法将行的“内容”转换为数字。 – Zabba

+0

'scores.txt'的内容是不相关的,因为该文件的内容不会被读取或解析;) –

回答

3

http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html

之前看样子你认为你可以传递一个文件名Scanner并将它打开。 Scanner没有构造函数,它以您想象的方式将文件名作为参数。你有什么是阅读在String“scores.txt”

的javadoc告诉你如何使用Scanner类中正确读取文件扫描仪:

Scanner in = new Scanner(new File(inputFileName)); 
+0

如果我可能会问一个愚蠢的问题,请原谅我。我仍然在我的第一个级别的科学类,但不是我不断收到错误'ExamAverage.java:19:找不到符号 符号:类文件 位置:类ExamAverage Scanner in = new Scanner(new File(“查找inputfilename“)); ^' –

+0

您可能想阅读Oracle扫描教程:http://download.oracle.com/javase/tutorial/essential/io/scanning.html - 第二个示例显示了如何执行您正在尝试的操作(从文本文件中读取“double”)。你的新错误是因为你没有导入'java.io.File' –

+0

感谢您的帮助!有时候在学习这个时,我会变得有点压倒性的。 –

0

这条线:

test = Double.parseDouble(line); 

改掉创建从行变量双。你得到的错误是因为行变量中除了一个数字之外还有其他的东西。尝试打印脱节你打电话parseDouble()

+0

“其他”是......他的文件名。 –

+0

好吧,真的不管什么“其他”是什么。只有它不是数字 –

0

您试图格式一个来自字符串数据类型的数字。 java运行时正在向您显示问题:java.lang.NumberFormatException:对于输入字符串:“scores.txt”

我没有运行代码,但调试它并将字符串数字值转换为正确的数据类型编号格式,它会工作。

0

异常线程 “main” java.lang.NumberFormatException:对于输入字符串: “scores.txt”

看起来如下所示:

test = Double.parseDouble(line); 

line包含"scores.txt"代替的文件内容。

0

您在扫描仪中没有从文本文件中读取,它实际上是在读取字符串文字“scores.txt”,然后试图将“scores.txt”解析为双精度值。在构建扫描仪以从文件读取时,请确保您传递的是文件,而不是文件的名称。这将是这个样子:

Scanner in = new Scanner(new File("./scores.txt")):

只要确保你传递给文件,而不仅仅是文件名正确的文件路径。