如何手动退出while循环(java)

时间:2015-12-22 06:00:24

标签: java exception-handling while-loop

此代码将从控制台获取用户输入,并根据输入是否为整数转到两个位置之一。捕获异常,然后再次读取它以将其从流中取出来处理。 (不确定Scanner是否算作流,但我知道如果没有input.next(),它将永远不会离开该部分。)

所以我想知道的是,如果我通过某个输入获得MismatchException,我该如何退出循环。我已经测试了if(bad_input == any),结果发现我实际上永远无法实现。我在该块中尝试了一些从未执行过的打印语句。非常感谢任何帮助。

解决

不确定如何解决问题,但这已经解决了。我错误地使用==来检查两个字符串。正确的方法是使用bad_input.equals(“x”)。

public static void main(String[] args){
  //read input from console
  Scanner input = new Scanner(System.in);

  boolean loop = true;

  while(loop){
    //inputting "1 2 d 1" will evaluate each term separately and output at once
    try{

      //choice = console input only in INTEGER
      int choice = input.nextInt();
      System.out.println("Input was " + choice);

    } catch (InputMismatchException ex){
      //here if input != INTEGER

      String bad_input = input.next();
      System.out.println("Bad Input: " + bad_input);

      //need to figure out how to exit loop!!
      if(bad_input == "x"){
           loop = false;
           return;
      }
      continue;
    }
  }
}

5 个答案:

答案 0 :(得分:2)

在java中,字符串比较使用等于函数“==”可能无法正常工作

更改

if (bad_input == "x") {
    loop = false;
    return;
}

if (bad_input.equals("x")) {
    loop = false;
    return;
}

答案 1 :(得分:2)

尝试使用break。

if(condition)
    break;

答案 2 :(得分:1)

break;将立即退出循环。你做的也应该工作。我不确定你是否需要if语句,当且仅当输入不是整数时,才会执行整个catch块。

答案 3 :(得分:1)

我觉得你需要使用

 if(bad_input.equals("x")){
       loop = false;
       return;
  }

==检查相同的参考

.equals检查相同的值

http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/

答案 4 :(得分:1)

可能应该使用 equalsIgnoreCase 方法。

if (bad_input.equalsIgnoreCase("x")) {

要以除整数之外的任何值退出循环,您只需使用 break

catch (InputMismatchException ex) {
                // here if input != INTEGER

                String bad_input = input.next();
                System.out.println("Bad Input: " + bad_input);

                break;
            }