2011-11-03 85 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")):

只要確保你傳遞給文件,而不僅僅是文件名正確的文件路徑。