2016-01-21 71 views
1
import java.util.Scanner; 
public class Average 
{ 
    public void Average() 
    { 
     Scanner in = (new Scanner("J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt")); 
     try{ 
      String test = in.nextLine(); 
     } catch(NullPointerException i) { 
      System.out.println("Error: " + i.getMessage()); 
     } 

     int total = 0; 
     int counter = 0; 

     while(in.hasNextInt()){ 
      total = total + in.nextInt(); 
      counter++; 
     } 
     total = total/counter; 
     System.out.println(total); 
    } 
} 

我有一個項目爲我的AP Comp類和我做了根據筆記的工作,但文件「數字」沒有被讀取和當它應該是一些巨大的數字時,我會得到答案0。我似乎無法讓Java讀取我的文本文檔

+2

你確定那條路嗎?非常肯定? '第二學期'? –

+0

檢查掃描儀路徑中的間距,例如Scanner in =(new Scanner(「J:\\ AP Comptuter Science \\ Semester2 \\ Exeptions \\ 13.1 \\ numbers.txt」)); – Arsaceus

+0

*「沒有被讀取」*這是什麼意思?你得到一個錯誤?在......除零,也許? – Andreas

回答

0

首先你應該糾正你的路徑之後,很可能把它放在同一個目錄中的類文件。而不是提供一個路徑掃描儀,你也應該給它一個文件。它應該看起來像這樣。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class Average 
    { 

     public void printAverage(){ 
      File file = new File(""J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt""); 
      Scanner scan; 

      try { 
       scan = new Scanner(file); 
       int total = 0, counter = 0; 

       while(scan.hasNextInt()){ 
        System.out.println("loop"); 
        total = total + scan.nextInt(); 
        counter++; 

       } 
       if(counter != 0) 
        total = total/counter; 
       System.out.println(total); 

      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 

     } 

    } 
+0

我得到了錯誤未報告的異常java.io.FileNotFoundException;必須被捕獲或聲明爲拋出突出顯示的部分是Scanner in =(新掃描儀(文件)); –

+0

這意味着路徑是錯誤的。 –

1
new Scanner("J:\\AP Comptuter Science\\Semester  2\\Exeptions\\13.1\\numbers.txt") 

您正在調用Scanner(String source),它不讀取該文件;它會掃描字符串本身。

你需要的可能是public Scanner(File source),如下:

new Scanner(new File("J:\\AP Comptuter Science\\Semester  2\\Exeptions\\13.1\\numbers.txt")) 

你還需要檢查路徑,幾乎可以肯定不是「學期」和「2」之間

全場5位我強烈建議您在調試器中逐步執行代碼,而不是僅僅運行。如果你這樣做了,你會看到執行

String test = in.nextLine(); 

後面的字符串test包含文件,而不是它的內容的名稱。

有可能其他方面的改進,考慮在代碼審查stackexchange發佈你能夠使它發揮作用

+0

這五個空格是從我格式化文件,所以我可以發佈的代碼。 –

+0

但更重要的是你使用了錯誤的方法 –

0

正如前面提到的,在代碼中有幾個問題:

一)new Scanner(String)讀取字符串的文件

B)以外,路徑似乎是不正確

C)的處理DivideByZeroFileNotFound例外

請參閱以下代碼:

import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.io.File; 
public class Average{ 
    public void average(){ 
     Scanner in = null; 
     try{ 
      in = (new Scanner(new File("J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt"))); 
      String test = in.nextLine(); 
     } 
     catch(NullPointerException | FileNotFoundException i){ 
      System.out.println("Error: " + i.getMessage()); 
     } 
     int total = 0; 
     int counter = 0; 
     while(in != null && in.hasNextInt()) 
     { 
      total = total + in.nextInt(); 
      counter++; 
     } 
     Float average = null; 
     if (counter > 0) { //to avoid divide by zero error 
      average = (float)total/counter; 
      System.out.println("Average: "+average); 
     } 
    } 

    public static void main(String args[]){ 
     new Average().average(); 
    } 
} 

這適用於僅numbers.txt所要求的Scanner類的nextInt()方法,該方法具有由空間分開的整數。

+0

非常感謝你,我意識到我的輸入是錯誤的,爲什麼現在不工作,我比較了兩者。 –

相關問題