while循环条件java

时间:2016-02-24 11:56:28

标签: java loops while-loop

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)
  4. 但由于某种原因,循环永远不会退出。我几乎可以肯定这是因为while循环中的最后两个条件,但我找不到错误。

2 个答案:

答案 0 :(得分:3)

当您使用OR时,您正在使用逻辑AND运算符(您希望所有满足条件,而不仅仅是至少其中一个它们)。

AND使用&& (!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])

for(int i=0; i <latArray.count; i++)
{

   //annotation.coordinate.latitude
   //annotation.coordinate.longitude
   //compare your latitude and longitude values and change the image accordingly.
}

答案 1 :(得分: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]) {