java添加程序:两个连续的零将导致输入的所有值的总和被打印并且程序被终止

时间:2015-07-13 17:04:23

标签: java

我想让这个程序适用于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;
            }
        }
    }
}

1 个答案:

答案 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;
            }
        }
    }
}