简体   繁体   中英

How to initialize variable back to 0 in a while loop in java?

I want my code to loop, but reinitialize the variable back to 0. Every time I input a number, it add it to the previous result, but I want it to reset. I attached two images below. One is the actual output and the other is the expected output.

import java.util.Scanner;

public class AddOrMultiplyNNumbers {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String am;
    int sum = 0;
    int total = 1;
    int n = 0;

    while (true) {

        System.out.print("enter an integer number: ");
        n = input.nextInt();
        if(n == 0) {
            break; 
        }
        System.out.print("enter either 'a' or 'm': ");
        input.nextLine();
        am = input.nextLine();
        if (am.equals("a")) {
            for (int y = 1; y <= n; y++) {
                sum = sum + y;
            }
            System.out.println(sum);
        } else if (am.equals("m")) {
            for (int x = 1; x <= n; x++) {
                total = total * x;
            }
            System.out.println(total);
        }
      }
   }
} 

Actual Output

实际产量

Desired Output

所需输入

You can use continue

if(n == 0) {
    sum = 0;
    total = 1;
    continue; 
}

I don't know if I fully understand your question, but just do sum=0; and total=1; after you print out the final result. You should also consider doing a try/catch statement for robustness on the nextInt so that characters and strings don't break your program...

try {
    n = input.nextInt();
}
catch (Exception e) {
    System.out.println("Not a Number");
}

You can initialize the variables inside the while loop

public class AddOrMultiplyNNumbers {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String am;

    while (true) {

        int sum = 0;
        int total = 1;
        int n = 0;

        System.out.print("enter an integer number: ");
        n = input.nextInt();
        if(n == 0) {
            break; 
        }
        System.out.print("enter either 'a' or 'm': ");
        input.nextLine();
        am = input.nextLine();
        if (am.equals("a")) {
            for (int y = 1; y <= n; y++) {
                sum = sum + y;
            }
            System.out.println(sum);
        } else if (am.equals("m")) {
            for (int x = 1; x <= n; x++) {
                total = total * x;
            }
            System.out.println(total);
        }
      }
   }
} 

To zero a variable, simply assign 0 at the appropriate point.

sum = 0;

An appropriate place to insert this statement for your desired output is immediately before the first for loop. Likewise, reset total before the second for .

However, a much better way to write this is to declare the variable where it is needed, as you have done for x and y . This applies to am , sum , total and n

Scanner input = new Scanner(System.in);

while (true) {
    System.out.print("enter an integer number: ");
    int n = input.nextInt();
    if (n == 0) {
        break; 
    }
    System.out.print("enter either 'a' or 'm': ");
    input.nextLine();
    String am = input.nextLine();
    if (am.equals("a")) {
        int sum = 0;
        for (int y = 1; y <= n; y++) {
            sum = sum + y;
        }
        System.out.println(sum);
    } else if (am.equals("m")) {
        int total = 1;
        for (int x = 1; x <= n; x++) {
            total = total * x;
        }
        System.out.println(total);
    }
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM