0

只是对这里发生的事情有点困惑。此错误陷阱的要点是,例如,用户输入 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.");

  }
}
4

3 回答 3

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.");

  }
}
于 2013-04-07T03:19:08.933 回答
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.");

  }
}
于 2013-04-07T03:20:38.050 回答
-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.");
}   
于 2013-04-07T03:12:41.853 回答