¿Cómo inicializar la variable de nuevo a 0 en un ciclo while en java?

Quiero que mi código se repita, pero reinicialice la variable a 0. Cada vez que ingreso un número, lo agrego al resultado anterior, pero quiero que se restablezca. Adjunto dos imágenes a continuación. Uno es el resultado real y el otro es el resultado esperado.

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);
        }
      }
   }
} 

Salida real

Salida real

Salida deseada

Entrada deseada

Respuesta 1

Puede inicializar las variables dentro del ciclo while

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);
        }
      }
   }
} 
Respuesta: 2

Puedes usar continue

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

Para poner a cero una variable, simplemente asigne 0en el punto apropiado.

sum = 0;

Un lugar apropiado para insertar esta declaración para su salida deseada es inmediatamente antes del primer forbucle. Del mismo modo, restablecer totalantes del segundo for.

Sin embargo, una forma mucho mejor de escribir esto es declarar la variable donde se necesita, como lo ha hecho para xy y. Esto se aplica a am, sum, totalyn

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);
    }
  }
Respuesta: 4

Me gustaría saber qué pensar cuando escribo lo que debería ser un método perfectamente bueno, pero no se reconoce como un método. Aquí está. GObject privado getCollidingObject () {gobj = ...

Este es el resultado final que estoy tratando de obtener: ItemStack block = new ItemStack (Block.dirt, 1); Y esto es lo que tengo String s = "Block.dirt"; ItemStack block = nuevo ItemStack (, 1); Eso ...

Estoy teniendo una duda Entiendo que jdk tiene [jre + herramientas de desarrollo (Java, javac, depurador, etc.) + código fuente (src.zip)]. Ahora trabajar en el compilador de Java no tiene nada que ver con ...

Estoy buscando una biblioteca que proporcione acceso de lectura y escritura de tipo seguro para un Mapa <String, String> a través de un bean Java proxy. Por ejemplo: interfaz Person {String getName (); nulo setName (...