2017-01-22 153 views
1

我環顧四周,找不到解決方案。我的代碼應該從用戶處獲得輸入,並在輸入爲空時停止。代碼最初很簡單,但現在我認爲我已經過於複雜了,所以很抱歉。使用Java檢查用戶輸入是否爲空

Scanner read = new Scanner(System.in); 
System.out.println("Input words, enter blank to stop"); 
boolean working = true; 
do { 
    if(working == false) 
    { 
     break; 
    } 

    String a = read.next(); 

    if (a.equals("")) { 
     working = false; 
     System.out.println("no data");  
    } else { 
     Container.addWord(a); 
    } 
} while (working == true); 

謝謝。

+0

;) – azro

+0

你嘗試'scanner.hasNext()'方法? –

+0

@azro他在開始時將它設置爲true –

回答

2

下一個()改爲nextLine():

Scanner read = new Scanner(System.in); 
    System.out.println("Input words, enter blank to stop"); 
    boolean working = true; 
    do { 
     if (working == false) { 
      break; 
     } 
     String a = read.nextLine(); 
     if (a.isEmpty()) { 
      working = false; 
      System.out.println("no data"); 

     } else { 

      Container.addWord(a); 
     } 

    } while (working == true); 
+0

謝謝你幫助我,這工作。 – Aueisbiejei3i939

+0

你錯過了什麼。什麼是'.isEmpty()'? –

+0

接受答案:D –

0

可以簡化整個事情:

Scanner read = new Scanner(System.in); 
    System.out.println("Input words, enter blank to stop"); 
    boolean working = true; 
    do { 
     String keyEntered = read.nextLine(); 

     if (keyEntered.isEmpty()) { 
     working = false; 
     System.out.println("No data"); 
     } else { 
     System.out.println("You entered: " + keyEntered); 
     } 
    } while (working); 
1

您是否嘗試過使用String#trim().isEmpty()

它也將考慮像" "這樣的字符串爲空。

do { 
    String a = read.next(); 

    if (a.trim().isEmpty()) { 
     working = false; 
     System.out.println("no data");  
    } else { 
     Container.addWord(a); 
    } 
} while (working); 
+1

這不是問題,但它是有用的知識,所以謝謝。 – Aueisbiejei3i939

1

我覺得你的代碼可以用下面的替換:

Scanner read = new Scanner(System.in); 
System.out.println("Input words, enter blank to stop"); 
while(true) {  
    if (!read.hasNext()) { 
     System.out.println("no data"); 
     break; 
    } 
    String a = read.next(); 
    Container.addWord(a); 
} 

我也去掉了working變量,並用break聲明取代了它。

如果更改read.next()read.nextLine()一定要同時更新read.hasNext()read.hasNextLine()

+0

謝謝,我的代碼最初看起來與此類似,但後來我毀了它試圖解決我的問題。 – Aueisbiejei3i939

+0

@ Aueisbiejei3i939剛剛意識到不需要定義'working',所以我將它從代碼中移除。 –

1

這是更優雅一點的第一個「如果」聲明是沒有用的,因爲它的工作通假,你不會在while循環進入下一次版本

public static void main(String...args){ 
    Scanner read = new Scanner(System.in); 
    String line = null; 
    System.out.println("Enter text:"); 
    while(!(line=read.nextLine()).equals("")){ 
     System.out.println("Your text:"+line); 
     System.out.println("Enter text or press enter to exit:"); 
    } 

    System.out.println("Bye bye !!!"); 
} 
+0

謝謝。不錯的代碼 – Aueisbiejei3i939