2015-11-17 75 views
0

我試圖從文件中提取整數並將它們寫入某些情況以免我必須複製和粘貼這麼多。以下是我有:從文件中讀取整數並將它們重寫爲新文件

public class PullFrom { 
    public static void main(String[] args) throws IOException { 
     Scanner input = new Scanner(new File("PullFrom.txt")); 
     BufferedWriter out = new BufferedWriter(new FileWriter("OutPutFile.txt", true)); 
     int ID; 

     while (input.hasNextLine()) { 
      ID = input.nextInt(); 

      for (int i = 0; i < 1; i++) { 
       try { 
        out.write("case " + ID + ":"); 
        out.newLine(); 
        out.write("setRandomWalk(false);"); 
        out.newLine(); 
        out.write("break;"); 
        out.newLine(); 
       } catch (IOException e) { 
        System.out.println("Cannot Do It"); 
        e.printStackTrace(); 
       } 
      } 
     } 
     out.close(); 
     input.close(); 
    } 
} 

在Eclipse我在控制檯收到此:重複

Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at reader.PullFrom.main(PullFrom.java:17) 

這個錯誤本身在控制檯幾次。隨着我的「不能做」文本。

這是我的「PullFrom.txt」文件的一個例子:

524 
1988 
7823 
6723 

最後,什麼程序產生在我的輸出文件:

case 524: 
setRandomWalk(false); 
break; 

這似乎是正確的,但它只打印出第一個int ..

+0

在你的for循環中你有我<1,所以當然它只能做一行。我只是刪除for循環。 – coderrick

+0

for循環在while循環中,如果我將for循環更改爲循環10次,它將一遍又一遍地循環同一個整數,而不是在下一行上抓取新的循環。 –

+0

如果你有很多具有相同操作的例子,使用C,C++,Java等語言,你可以把所有的case標籤放在一起 - 沒有必要寫'setRandomWalk(false); break;'more比一次。你不需要編寫一個程序來實現這一點 - 通常IDE的搜索和替換將會很好。 – RealSkeptic

回答

4

您在循環的每次迭代中調用out.close()。將呼叫置於out.close()以外的while循環塊。

編輯:在您更改之後,您應該嘗試在while循環表達式中檢查hasNextLine()hasNextInt()。如果仍然產生一個異常,你可以將你的調用包裝在try/catch中,並在catch被觸發時退出循環。

while(input.hasNextLine() && input.hasNextInt()) { 
    try { 
    ... 
    } catch (NoSuchElementException e) { 
    break; 
    } 
} 
+0

注意到,我刷新我的網頁之前,我改變了它,現在我就在java.util.Scanner.throwFor(來源不明)在線程 異常「主要」 java.util.NoSuchElementException \t \t在java.util.Scanner.next(未知來源) \t在java.util.Scanner.nextInt(未知來源) \t在java.util.Scanner.nextInt(未知來源) \t在reader.PullFrom.main(PullFrom。 java:17) –

+1

用新的錯誤信息編輯你的問題。 –

+0

完成。更新了問題中的代碼以及新的錯誤。 –

相關問題