Java 无效输入仍会更新总数

Java 无效输入仍会更新总数,java,Java,[编辑] 似乎将这段代码移到其他地方可以解决我的问题,但我看不出在哪里 if (numLeaving < MIN_PEOPLE || numEntering < MIN_PEOPLE || totalPeople < MIN_PEOPLE) { JOptionPane.showMessageDialog(null,"Invalid data"); } 您的程序不会在任何地方说负数是无效输入。-=and+=运算符只适用于负整数 [编辑] 假设您

[编辑] 似乎将这段代码移到其他地方可以解决我的问题,但我看不出在哪里

    if (numLeaving < MIN_PEOPLE || numEntering < MIN_PEOPLE || totalPeople < MIN_PEOPLE) { 
       JOptionPane.showMessageDialog(null,"Invalid data"); 
    }

您的程序不会在任何地方说负数是无效输入。-=and+=运算符只适用于负整数

[编辑] 假设您选择“离开”,并提供numLeaving=-65,则总人数将为0-(-65)=65。您将输入下面代码的if块,而不是检查负输入的else块

    if (totalPeople > MAX_PEOPLE) {
       invalid = false;
       totalPeople = totalPeople - numEntering;
       JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople);
    } 
    else if (numLeaving < MIN_PEOPLE || numEntering < MIN_PEOPLE || totalPeople < MIN_PEOPLE) { 
       JOptionPane.showMessageDialog(null,"Invalid data"); 
    } 
    else {
       JOptionPane.showMessageDialog(null,"Total people = " + totalPeople);              
    }
if(总人数>最大人数){
无效=错误;
totalPeople=totalPeople-numEntering;
JOptionPane.showMessageDialog(null,“超出容量”\n“+”总人数=“+totalPeople”);
} 
否则如果(numLeaving
您的程序在任何地方都不会说负数是无效输入。-=and+=运算符只适用于负整数

[编辑] 假设您选择“离开”,并提供numLeaving=-65,则总人数将为0-(-65)=65。您将输入下面代码的if块,而不是检查负输入的else块

    if (totalPeople > MAX_PEOPLE) {
       invalid = false;
       totalPeople = totalPeople - numEntering;
       JOptionPane.showMessageDialog(null,"Capacity exceeded\n" + "Total people = " + totalPeople);
    } 
    else if (numLeaving < MIN_PEOPLE || numEntering < MIN_PEOPLE || totalPeople < MIN_PEOPLE) { 
       JOptionPane.showMessageDialog(null,"Invalid data"); 
    } 
    else {
       JOptionPane.showMessageDialog(null,"Total people = " + totalPeople);              
    }
if(总人数>最大人数){
无效=错误;
totalPeople=totalPeople-numEntering;
JOptionPane.showMessageDialog(null,“超出容量”\n“+”总人数=“+totalPeople”);
} 
否则如果(numLeaving
之所以仍在更新“totalPeople”,是因为您没有在循环开始时检查它是否为有效输入。如果我是你,我会在while循环的开头添加以下代码:

if(totalPeople < 0){
   invalid = false;
   break;
}
if(总人数<0){
无效=错误;
打破
}
我还发现用否定的方式命名布尔值有点误导。如果一个名为“invalid”的布尔值为true,就会产生一个问题:“true代表valid还是invalid?”


我会将布尔值命名为“valid”。

之所以仍在更新“totalPeople”,是因为您没有在循环开始时检查它是否为有效输入。如果我是你,我会在while循环的开头添加以下代码:

if(totalPeople < 0){
   invalid = false;
   break;
}
if(总人数<0){
无效=错误;
打破
}
我还发现用否定的方式命名布尔值有点误导。如果一个名为“invalid”的布尔值为true,就会产生一个问题:“true代表valid还是invalid?”

我会将布尔值命名为“valid”。

else if(numLeaving