如何在while循环中执行catch语句?

时间:2018-10-21 13:45:25

标签: java while-loop jframe joptionpane

我正在使用“其他”选项制作收银机,该选项允许用户通过用户输入添加金额。我已经使用JOptionPane完成了此操作,“其他”按钮代码如下:

private void btnOverigActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String prijs  = JOptionPane.showInputDialog(this, "Vul een bedrag in");
    try {
        double overigePrijs = Double.parseDouble(prijs);
        if (overigePrijs > 0){
            aantalProducten[6]++;
            totaalPerProduct[6] += overigePrijs;
        }
        huidigePrijsDisplay();
    }

    catch (Exception letter){
        while (true){
        prijs = JOptionPane.showInputDialog(this, "Vul a.u.b. alleen cijfers in.");
        }       
}                         

即使输入数字,此while循环也不会关闭JOptionPane,如何正确循环?

2 个答案:

答案 0 :(得分:1)

问题尚不清楚。我假设如果try部分没有按您期望的方式运行,则JOptionPane应该重新打开,并提示用户再次执行此操作。如果是这样,您可以执行以下操作:

创建方法:

private void doTheTask(){
String prijs  = JOptionPane.showInputDialog(this, "Vul een bedrag in");
  try{
  //your task here.
}
catch (Exception letter){
  //Call the method again.
  doTheTask();
}
}

并在您的操作内调用方法:

private void btnOverigActionPerformed(java.awt.event.ActionEvent evt){
    doTheTask();
}

答案 1 :(得分:1)

我建议您在代码中使用其他方法:

  String prijs = "";
  double overigePrijs = -1;
  while (true) {
     prijs = JOptionPane.showInputDialog(null, "Vul een bedrag in");
     if (prijs != null) { // if user cancel the return will be null
        try {
           overigePrijs = Double.parseDouble(prijs);
           break; // Exits the loop because you have a valid number
        } catch (NumberFormatException ex) {
           // Do nothing
        }
     } else {
        // You can cancel here
     }
     // You can send a message to the user here about the invalid input
  }

  if (overigePrijs > 0) {
     aantalProducten[6]++;
     totaalPerProduct[6] += overigePrijs;
  }
  huidigePrijsDisplay();

此代码将循环播放,直到用户输入有效的数字为止,然后您可以在while循环之后使用。可能需要一些改进,例如取消逻辑或第二次更改消息,但是主要思想是这样。