簡體   English   中英

掃描儀掛在用戶輸入上

[英]Scanner hangs on user input

我被困住了,無法弄清楚為什么輸入掃描器掛起,等待新輸入。 誰能看到我想念的或沒有做的? 我知道這很愚蠢,謝謝!

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);
      }
    }
  }

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

這條線沒有意義。 如果要防御性編程,請始終先檢查對象是否為null。 如果str為null,則行將拋出NPE,而不僅僅是將變量more設置為false。 我的建議是如何更改此行:if(str == null || str.isEmpty()|| str.equals(“”))或僅使用if(StringUtils.isEmpty(str))

出於相同的原因,“ if(val.equals(“”)||(val == null)|| val.isEmpty())”行也可以僅替換為“ if(StringUtils.isEmpty(val))”。 。

如果要在控制台中結束輸入,請嘗試為EOF傳遞“ Ctrl + Z”組合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM