2013-04-09 69 views
-3

我正在編寫此代碼以從文本文件中刪除一個單詞,似乎無法使掃描儀正常工作。它將與bufferedreader一起使用,但我不允許使用它。我在這裏做錯了什麼?掃描儀不工作,而不是緩衝讀取器

public static void Option2Method(String dictionary) throws IOException 
{ 

    File inputFile = new File(dictionary); 
    File tempFile = new File("TempDict.txt"); 
    String tempword = JOptionPane.showInputDialog(null, "Enter a word to remove"); 
    String lineToRemove = tempword.toLowerCase(); 
    lineToRemove = lineToRemove.replaceAll(",", ""); 
    lineToRemove = lineToRemove.replaceAll("\\.", ""); 
    lineToRemove = lineToRemove.replaceAll("\\?", ""); 
    lineToRemove = lineToRemove.replaceAll(" ", ""); 

    Scanner reader = new Scanner(new File(inputFile)); 
    FileWriter writer = new FileWriter(tempFile); 
    String currentLine; 

    while((currentLine = reader.hasNext()) != null) 
    { 
     String trimmedLine = currentLine.trim(); 
     if(trimmedLine.equals(lineToRemove)) continue; 
     writer.write(currentLine + "\n"); 
    } 
    reader.close(); 
    writer.close(); 
    inputFile.delete(); 
    tempFile.renameTo(inputFile); 
} 
+0

這兩個類是在相同System.io *。你的意思是「Im not allowed use that」 – 2013-04-09 09:40:42

+0

它是一個項目的一部分,我們還沒有涵蓋BufferedReader但是 – user2205055 2013-04-09 09:42:31

+0

你可以驗證'reader'是否讀取文件? – John 2013-04-28 03:48:35

回答

1
while((currentLine = reader.next()) != null) 

使用next()而不是hasNext()

hasNext() - 這隻會說如果在其輸入中存在任何更多的標記。

next() - 這將從其輸入中返回下一個完整標記。

1

它應該是

Scanner reader = new Scanner(new File(inputFile)); 
FileWriter writer = new FileWriter(tempFile); 
while(reader.hasNextLine()) { 
    String currentLine = reader.nextLine(); 
    ...