错误捕获帮助;消息不断重复

时间:2013-04-07 03:09:24

标签: java

对这里发生的事情感到有些困惑。例如,该错误陷阱的点是用户输入3个数字/字母而不是4位数字。这个错误陷阱被设计循环问题,直到用户正确。但是它反而循环错误消息。任何人都可以就发生的事情提供一些指示吗?

JFrame Error = new JFrame ();

String input = JOptionPane.showInputDialog(null,"Enter the 4 digit resistor values:");

while (true){
  try{

    int numInput = Integer.parseInt (input);

    if (numInput >= 1000) {
    break;
    }
    else {
      JOptionPane.showMessageDialog(Error,"Invalid Input.");
    }
  }
  catch (Exception e){
    JOptionPane.showMessageDialog(Error,"Invalid Input.");

  }
}

3 个答案:

答案 0 :(得分:0)

您需要移动代码以询问输入到循环。

JFrame Error = new JFrame ();

String input = null;

while (true){
  try{

    input = JOptionPane.showInputDialog(null,"Enter the 4 digit resistor values:");
    int numInput = Integer.parseInt (input);

    if (numInput >= 1000) {
    break;
    }
    else {
      JOptionPane.showMessageDialog(Error,"Invalid Input.");
    }
  }
  catch (Exception e){
    JOptionPane.showMessageDialog(Error,"Invalid Input.");

  }
}

答案 1 :(得分:0)

正如JacobM所提到的,你需要在while循环中询问输入。当catch子句终止时,你的代码所做的下一件事就是while循环中的第一件事。

JFrame Error = new JFrame ();

while (true){
  String input = JOptionPane.showInputDialog(null,"Enter the 4 digit resistor values:");
  try{

    int numInput = Integer.parseInt (input);

    if (numInput >= 1000) {
    break;
    }
    else {
      JOptionPane.showMessageDialog(Error,"Invalid Input.");
    }
  }
  catch (Exception e){
    JOptionPane.showMessageDialog(Error,"Invalid Input.");

  }
}

答案 2 :(得分:-1)

你需要在循环中要求一个新值 。将其更改为:

String input;

try {
    while (true){
        input = JOptionPane.showInputDialog(null,"Enter the 4 digit resistor values:");

        int numInput = Integer.parseInt (input);

        if (numInput >= 1000) {
            break;
        }
        else {
            JOptionPane.showMessageDialog(Error,"Invalid Input.");
        }
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(Error,"Invalid Input.");
}