Txt文件输入错误Java

时间:2011-11-03 01:25:24

标签: 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();

} }

5 个答案:

答案 0 :(得分:3)

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

您认为可以将文件名传递给Scanner并将其打开。 Scanner没有构造函数以您认为的方式将文件名作为参数。你所拥有的是一个正在阅读String“scores.txt”

的扫描仪

JavaDocs向您展示如何正确使用Scanner类来读取文件:

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

答案 1 :(得分:0)

这一行:

test = Double.parseDouble(line);

尝试从行变量创建一个double。你得到的错误是因为行变量中有一个数字以外的东西。在致电parseDouble()

之前尝试打印一行

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

  

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

如下所示:

test = Double.parseDouble(line);

line包含"scores.txt",而不是文件的内容。

答案 4 :(得分:0)

你的扫描仪没有从文本文件中读取,它实际上正在读取字符串文字“scores.txt”,然后尝试将“scores.txt”解析为double。构建扫描程序以从文件中读取时,请确保传递文件,而不是文件的名称。它看起来像这样:

  

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

只需确保将正确的文件路径传递给File,而不仅仅是文件名。