2013-11-26 285 views
0

我正在爲uni編寫一個實驗任務的程序,代碼將會非常明顯地發生什麼,但是當它詢問第一行時,即循環中的第一個1 ,並插入一個字符串並回車,它會自動跳轉到循環中的最後一個增量(5)任何想法?for循環不遍歷所有增量

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.Scanner; 

public class limmerickWriter { 
    public static void main(String[] args)throws Exception { 

     Scanner limScan = new Scanner(System.in); //scanner to read user input 

     System.out.println("please enter the name of the file"); 

     String fileName; 

     fileName = limScan.next(); //filename for the text file 

     PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName))); //declaring a new file writer 

     for (int i = 1; i <= 5; i++) //loop to get 5 seperate lines from the user 
     { 
      System.out.println("please enter line " + i); 

      out.println(limScan.next()); //writes the contents of the scanner to the file 

     } 
     out.flush(); 
     out.close(); 
    } 
} 
+0

您是否嘗試過調試它?代碼對我來說看起來很好。 – Paranaix

+0

我正在使用Eclipse IDE,因此它在編譯前自動調試 – srheayns

+4

不,它不。 「調試」意味着在調試器中運行代碼,或者將調試器附加到應用程序中。 –

回答

6

雖然與scanner.next()白色空間讀取被作爲默認分隔符。這意味着如果您的文件名中插入了多個用空格分隔的單詞,則會先連續讀取next()

例如,同時採用scanner.next(),如果插入閱讀filename

test ATest BTest CTest DTest ETest

,打Enter,你會看到名爲test文件在相關的類路徑被創建,包含文本數據ATest BTest CTest DTest ETest

嘗試在for循環中使用nextLine()