2014-02-20 20 views
0

嘿,夥計們,我想知道我該如何讓掃描儀接受比第一個字更多的內容?我的掃描儀(用於用戶輸入)只讀取第一個單詞,如何讓它讀取所有輸入?

我的代碼的空格,您看到這樣的空白之前只有第一個字(摘錄)

if (command.equals("diary")) 
{ 
    String stuff; 
    while (scanner.hasNextLine()) 
    { 
     stuff = scanner.nextLine(); 

     BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\text.txt")); //you don't need to create a File object, FileWriter takes a string for the filepath as well 
     try { 
      writer.write("Diary info: " + stuff); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     writer.close(); 
    } 

} 
+3

多少錢你希望它接受?整條線? – immibis

+2

有很多選項,但您需要向我們展示示例輸入和預期輸出。沒有它,我們只能猜測你需要什麼。 – Pshemo

回答

0

一般next將默認的分隔符讀取整個數據,直到下一個分隔符,因爲設置一個或多個(或最終結束的數據)。
要讀取整行,您可以使用nextLine()而不是next()
要閱讀完整的數據(有許多行),你要麼可以遍歷所有線路與

while (scanner.hasNextLine()){ 
    String line = scanner.nextLine(); 
} 

,或者你可以只設置分隔符匹配的數據僅結束。你可以用

scanner.useDelimiter("\\Z"); 

做到這一點,只需使用scanner.next()像你現在這樣。 "\\Z"是代表整個數據結束的正則表達式。您還可以使用"\\A"將分隔符設置爲數據的開頭,因爲分隔符是在掃描程序光標的當前位置之後的第一個字符後搜索的,因此永遠不會找到掃描程序迭代,直到數據結束。


更新回答您的評論:

嘗試在此代碼示例循環之外移動作家,如:

if (command.equals("diary")) 
{ 
    String stuff; 
    BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\text.txt")); //you don't need to create a File object, FileWriter takes a string for the filepath as well 
    Scanner scanner =null; 
    while (scanner.hasNextLine()) 
    { 
     stuff = scanner.nextLine(); 

     try { 
      writer.write("Diary info: " + stuff); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    writer.close(); 

} 
+0

好的,我添加了循環,但我怎麼關閉作家?如果我把它放在循環中,它將無法工作,如果我把它放在循環中。它只是創造了一條新的路線haha – Fusion

+0

你能用你現在使用的代碼更新你的問題嗎? – Pshemo

+0

以新代碼更新。 – Fusion