2017-01-22 131 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