簡體   English   中英

while循環條件java

[英]while loop conditions java

String userGuessParameters = "a,b";

while (!Character.isDigit(userGuessParameters.charAt(0)) || 
       !Character.isDigit(userGuessParameters.charAt(2)) ||
       userGuessParameters.length() != 3 || 
       (int)(userGuessParameters.charAt(0)) >= parameters[0] || 
       (int)(userGuessParameters.charAt(2)) >= parameters[1]) {

    System.out.print("Mida kaevame (rida, veerg): ");
    userGuessParameters = userInput.nextLine();
    userGuessParameters = userGuessParameters.replaceAll(" ", "");
}

我正在嘗試檢查while循環中是否滿足所有必需條件。 parameters是用戶以數組形式輸入的內容。 假設parameters = [4, 4] (參數用於創建4x4映射)。

我需要userGuessParameters是:

  1. 數字
  2. 長度等於3(輸入看起來像這樣:刪除空格時為2,2)
  3. 小於最大坐標(3,3)

但是由於某種原因,循環永遠不會退出。 我幾乎可以肯定這是由於while循環中的最后兩個條件,但是我找不到錯誤。

當您應該使用AND時,您正在使用邏輯OR運算符(您希望滿足所有條件,而不僅是其中至少一個條件 )。

使用ANDJava表示法 &&

(!Character.isDigit(userGuessParameters.charAt(0)) &&
!Character.isDigit(userGuessParameters.charAt(2)) &&
userGuessParameters.length() != 3 &&
(int)(userGuessParameters.charAt(0)) >= parameters[0] &&
(int)(userGuessParameters.charAt(2)) >= parameters[1])

嘗試使用&&代替|| 像這樣:

   while (!Character.isDigit(userGuessParameters.charAt(0)) && !Character.isDigit(userGuessParameters.charAt(2))
       && userGuessParameters.length() != 3 && (int)(userGuessParameters.charAt(0)) >= parameters[0]
       && (int)(userGuessParameters.charAt(2)) >= parameters[1]) {

暫無
暫無

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

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