有人可以解释我在遇到“超出容量”消息后如何不使用中断或system.exit而结束程序,但是如果未到达消息则继续提示“离开”并“进入”吗?

同样,对于“容量超出”消息,它还会显示totalPeople。无论我进入还是离开,此部分中的totalPeople都会变成很多人。在输入休假或输入值以使其超过容量之前,我该如何使它成为存储的totalPeople?

 int numLeaving = Integer.parseInt(JOptionPane.showInputDialog("number leaving"));
 int numEntering = Integer.parseInt(JOptionPane.showInputDialog("number entering:"));
 while (totalPeople <= 65 && totalPeople >= 0) {
     try  {
         if (numLeaving >= 0 && numEntering >= 0) {
             totalPeople = (totalPeople + numEntering) - numLeaving;
             JOptionPane.showMessageDialog(null,"Total people = " + totalPeople);
         }
         else {
             JOptionPane.showMessageDialog(null,"Invalid data");
         }
     }
     catch (NumberFormatException e) {
         JOptionPane.showMessageDialog(null,"Enter numbers only");
     }

     if (totalPeople > 65) {
         JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople);
     }
     numLeaving = Integer.parseInt(JOptionPane.showInputDialog("number leaving"));
     numEntering = Integer.parseInt(JOptionPane.showInputDialog("number entering:"));
}

最佳答案

我认为您应该保留可以输入常量的人数限制。像这样:

static final int maximumPeople = 65;


因此,现在您可以将其用于循环条件以及所需的条件:

while (totalPeople <= maximumPeople && totalPeople >= 0)
{
   //code
}

if (totalPeople > maximumPeople) {
   //code
}


在您的情况下,另一个要修改的变量是totalPeople。在这种情况下,您可以显示可输入的人员总数的消息:

if (totalPeople > maximumPeople)
{
   JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + maximumPeople);
}


但这也将导致循环,因为您使用的是totalPeople(已输入的实际人数)。

希望对您有帮助!

09-25 15:46