2013-07-30 53 views
0

的投入,我無法理解掃描儀或者我應該說從控制檯我無法理解掃描儀或者我應該說從控制檯

public class Calculate { 

    public static void main(String[] args) throws IOException { 
     System.out.println("enter the lines"); 
     Scanner s = new Scanner(System.in); 
     ArrayList<String> result = new ArrayList<String>(); 
     String line = ""; 
     while((line = s.nextLine()) != null) { 
      result.add(line); 
     } 
     for(String ss : result){ 
      System.out.println(ss); 
     } 
    } 
} 

Console : 
enter the lines 
[Inputs on console:] 
aa 
bb 
cc 

的投入當我在調試模式下運行,串AA和bb被添加到List結果中,但是當從掃描器讀取cc時,它不會被添加到列表 我不確定,我錯過了什麼。看起來傻傻的我,但一些如何,我無法想象我錯過了什麼

+0

同意,這是一個愚蠢的問題,但我不能想到:( –

+1

你的代碼不應該打印任何東西,因爲while循環不會退出(你不能在控制檯中輸入null) ... – assylias

+0

與assylias一致 –

回答

0

此修訂(略)代碼按預期工作(你可以通過輸入一個空字符串退出程序):

public static void main(String[] args) { 
    System.out.println("enter the lines"); 
    Scanner s = new Scanner(System.in); 
    ArrayList<String> result = new ArrayList<String>(); 
    String line = ""; 
    while ((line = s.nextLine()) != null) { 
     if (line.isEmpty()) break; 
     result.add(line); 
    } 
    for (String ss : result) { 
     System.out.println(ss); 
    } 
} 

它輸出正確的輸入內容。

+0

我會在循環中使用'hasNextLine()'方法,而不是直接讀取該行,這樣你會得到稍微整齊的語法。 –

+0

@BoristheSpider或簡單地說:'while(true){line = s.nextLine(); ...'因爲'hasNextLine'將始終在控制檯中返回true。 – assylias

+0

@assylias對不起,但即使這樣也不適用於我:( –