Skip to content
Advertisement

While loop keeps executing a command after a break statement

I’m doing the University of Helsinki Java MOOC and there’s an exercise that consists in creating a program that lets you input as much numbers as you want, but as soon as you input a 0 the program ends and prints the total number of inputs you did and the sum of all of them.

I wrote the code and it works as intended except for one detail that I’ll explain bellow. Here’s my code:

public class Application {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Input a number.");
    int totalNumbers = 0;
    int sum = 0;

    while (true) {
        try {
            int input = Integer.parseInt(scanner.nextLine());
            sum += input;
            totalNumbers = totalNumbers + 1;
            System.out.println("Input another number.");

            if (input == 0) {
                System.out.println("You have input a total of " + totalNumbers + " numbers and the sum of all of them is " + sum + ".");
                break;
            }
        }

        catch (NumberFormatException e) {
            System.out.println("Please input a valid number.");
        }
    }
}

The issue is that after inputting 0 the program executes both the if and the try print commands. So the program prints, in this exact same order:

Input another number.

You have input a total of X numbers and the sum of all of them is X.

But it doesnt let you input more numbers because the program ends with exit code 0. I want it to stop printing Input another number.

I thought that adding a break statement inside the if one would automatically end the loop, but for some reason it loops the print command. How can I solve this?

Advertisement

Answer

Well You have the right idea but if u want the loop to break immediately after inputting a 0 then place your if statement at the appropriate place like so:

while (true) {
        try {
            int input = Integer.parseInt(scanner.nextLine());
            if (input == 0) {
                System.out.println("You have input a total of " + totalNumbers + " numbers and the sum of all of them is " + sum + ".");
                break;
            }
            sum += input;
            totalNumbers = totalNumbers + 1;
            System.out.println("Input another number.");   
        }
        catch (NumberFormatException e) {
            System.out.println("Please input a valid number.");
        }
    }
Advertisement