2014-08-28 83 views
-3

我試圖打開一個文件(words.txt),然後計算裏面的元音數量。這裏是我的代碼:爲什麼這個java代碼不能打開文本文件?

 Scanner input = new Scanner("words.txt"); 
    String fileContent = ""; 

    while (input.hasNext()) { 

     fileContent += input.next() + " "; 
    } 
    input.close(); 

    char[] charArr = fileContent.toCharArray(); 
    int counter = 0; 

    for(int i = 0; i < charArr.length; i++) 

    { 
      if(charArr[i] == 'a' || charArr[i] == 'e' || charArr[i] == 'i' || charArr[i] == 'o' || charArr[i] == 'u') 

       counter++; 
    } 

    System.out.println(fileContent); 

當我打印filecontent變量,它告訴我它所持有的字符串是'words.txt'。它實際上並沒有打開文件,只是讀取它的名稱。思考?

+2

您是否閱讀過'Scanner'的javadoc? – Kayaman 2014-08-28 21:35:03

+0

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html - 查看構造函數摘要。 – 2014-08-28 21:35:34

回答

0

Scanner類接受一個字符串;你永遠不會給它一個實際文件的內容。

+0

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – 2014-08-28 21:36:50

0

試試這個

檔案文件=新的文件( 「WORD.TXT」); 然後在scnner打開文件

0

您可能需要使用正則表達式您模式的匹配,而不是你的,如果解決方案:

int counter = 0;   

try (final Scanner in = new Scanner(Paths.get("src/words.txt"))) { 
    in.useDelimiter("[aeiouAEIOU]"); 

    while (in.hasNext()) { 
     in.next() 
     counter++; 
    } 
} 

System.out.println("Number of vowels: " + (counter - 1)); 

或者一個短一點的版本,使用循環一個

... 
for (counter = 0; in.hasNext(); in.next(), counter++) { 
    //do additional stuff like counting for statistics eg. 
} 
... 
相關問題