【问题标题】:Do-while loop won't escape - JavaDo-while 循环不会逃逸 - Java
【发布时间】:2012-09-16 02:40:33
【问题描述】:

do-while 循环是在增加之前还是之后检查一个值?我似乎无法使这个 do-while 循环转义,也无法确定这是否是我所犯的错误。这个循环的重点是从用户那里获取输入,当他们点击“X”时,我希望循环结束。我是否使用了错误类型的循环,或者可能是不正确的语句?

int i = 0, 
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];  
do{ 
    System.out.print("What is " + letter +"? ");
    coefficient[i] = keyboard.nextLine();
    i++;
    letter++;
    inputCount++;           
}while(coefficient[i] != "X");

【问题讨论】:

    标签: java loops do-while


    【解决方案1】:

    不要使用== 比较字符串。请改用equals(...)equalsIgnoreCase(...) 方法。了解 == 检查两个 objects 是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这就是这里重要的事情。所以不是

    if (fu == "bar") {
      // do something
    }
    

    做,

    if ("bar".equals(fu)) {
      // do something
    }
    

    或者,

    if ("bar".equalsIgnoreCase(fu)) {
      // do something
    }  
    

    特别是在你的情况下,我会改变

    } while(coefficient[i] != "X");
    

    类似于:

    } while(!"X".equalsIgnoreCase(coefficient[i]));
    

    您的代码中还有另一个问题,即您想测试放入coefficient[i] 的用户输入,但随后您立即增加i 变量,使coefficient[i] 不再引用输入。

    所以也许测试应该是:

    } while(!"X".equalsIgnoreCase(coefficient[i - 1]));
    

    【讨论】:

      【解决方案2】:

      您在coefficient[i] = keyboard.nextLine();while(coefficient[i] != "X"); 之间递增i,因此在检查coefficient[i] 为null 时,也使用.equals 来比较字符串。

      int i = 0, 
      inputCount = 0;
      char letter = 'a';
      String[] coefficient = new String[MAX_LENGTH];  
      do{ 
          System.out.print("What is " + letter +"? ");
          coefficient[i] = keyboard.nextLine();
          i++;
          letter++;
          inputCount++;           
      }while(!coefficient[i-1].equals("X"));
      

      【讨论】:

        【解决方案3】:

        这里有两个问题。首先,您不应该使用逻辑运算符比较字符串。使用 .equals 代替。 例如:

        coefficient[i].equals("X");
        

        其次,在检查 while 条件之前,您要增加数组索引计数器。所以你实际上需要从中减去一个来检查最近输入的字符串是否是 X。

        看看使用它是否能正常工作:

        coefficient[i-1].equals("X");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-26
          • 2021-02-01
          • 1970-01-01
          • 2018-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多