我想让这个程序适用于0-0案例。当我输入0时,它将首先显示小计0,然后我需要输入另一个0来显示总数0,但是在我的程序中,当我输入0时,它只显示总数0.(零值会导致要打印的小计并重置为零)
class Adding{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int subtotal = 0;
int total = 0;
while(true){
while(true){
int number = input.nextInt();
if(number == 0)break;
subtotal = subtotal + number;
}
total = total + subtotal;
if(subtotal != 0){
System.out.println("subtotal: " + subtotal);
subtotal = 0;
}else{
System.out.println("total: " + total);
break;
}
}
}
}
答案 0 :(得分:1)
这是因为您的情况subTotal!=0
而发生的。当您输入0
作为第一个输入时,显然您的小计将为0
。因此,它会跳过打印subtotal:0
并直接打印total:0
。因此,请记录您已阅读的输入或数量。如果subTotal!=0
或这是您的第一个输入,请打印subTotal
。
所以我添加了numbersRead
来跟踪您阅读的字符数。 (即使使用简单的布尔值,您也可以这样做)。
将您的代码更改为:
class Adding{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int subtotal = 0;
int total = 0;
int numbersRead=0;
while(true){
while(true){
int number = input.nextInt();
numbersRead++;
if(number == 0)break;
subtotal = subtotal + number;
}
total = total + subtotal;
if(subtotal != 0 || numbersRead == 1){
System.out.println("subtotal: " + subtotal);
subtotal = 0;
}else{
System.out.println("total: " + total);
break;
}
}
}
}