do while循环中的异常

时间:2014-06-08 19:40:57

标签: java loops exception

我有这段代码:

do {
  try {
    input = sc.nextInt();
  }

  catch(Exception e) {
     System.out.println("Wrong input");
     sc.nextLine();
   }
}
while (input < 1 || input > 4);

现在,如果我输入'abcd'而不是整数1-4,它会给出“错误的输入”消息并且程序循环,我怎么能这样做,以便当我输入整数时它也会给出“错误的输入”不符合布尔值(输入&lt; 1 || input&gt; 4)? 因此,如果我输入5,它也会给我“错误的输入”。

3 个答案:

答案 0 :(得分:0)

添加:

if(input < 1 || input > 4) {
  System.out.println("Wrong input");
}
input = sc.nextInt();

之后

答案 1 :(得分:0)

截至目前,您的try-catch块正在检查input是否为int类型。 do-while循环在输入后检查input,因此没用。在用户输入他/她想要的内容之后必须检查该条件。这应该解决它:

   do 
   {
        try
        {
            input = sc.nextInt();

            if(input < 1 || input > 4) // check condition here.
            {
                System.out.println("Wrong input");
            }
        }
        catch(Exception e)
        {
            System.out.println("Expected input to be an int. Try again."); // tell user that input must be an integer.
            sc.nextLine();
        }

    } while (input < 1 || input > 4);

答案 2 :(得分:0)

你也可以这样做:

while (true) {
  try {
    input = sc.nextInt();
    if (input >= 1 && input <= 4) {
      break;
    }
  } catch (Exception e) {
    System.out.println("Wrong input");
  }
  sc.nextLine();
}