扫描仪挂起用户输入

时间:2013-11-07 00:17:02

标签: java java.util.scanner

我陷入困境,无法弄清楚为什么我的输入扫描仪会挂起,等待新的输入。任何人都可以看到我缺少或不做什么?我知道这是愚蠢的,谢谢!

while (more == true){       
str = "";
val = "";

System.out.println("Enter a Constructor argument type : ");
try {
    str  = input.nextLine();
} catch (Exception e) {
    more = false; input.close();
}

if ( str.isEmpty() || str.equals("") || (str == null) ) {
more = false;
}
else{
    arguments.add(str);

    System.out.println("Enter it's value : ");
    try {
      val  = input.nextLine();
    } catch (Exception e) {
      more = false; 
    }
      if ( val.equals("") || (val == null) || val.isEmpty() ) {
        more = false;
      }
      else{
        values.add(val);
      }
    }
  }

1 个答案:

答案 0 :(得分:0)

if(str.isEmpty()|| str.equals(“”)||(str == null))

这条线毫无意义。如果要进行防御性编程,请首先检查对象是否为空。如果str为null,则行将抛出NPE,而不是仅将变量设置为false。 我的建议如何改变这一行: if(str == null || str.isEmpty()|| str.equals(“”)) 或者只是使用 如果(StringUtils.isEmpty(STR))

“if(val.equals(”“)||(val == null)|| val.isEmpty())”也可以用“if(StringUtils.isEmpty(val))”代替同样的原因。

如果要在控制台中结束输入,请尝试将“Ctrl + Z”组合传递给EOF。