multiplicacion y acumulacion de varios numeros ingresados por teclado

publicado por: Anonymous

necesito si me pueden ayudar con lo siguiente necesito multiplicar todos aquellos numeros que sean menores a 0, ingresandolo por teclado, e ir acumulando las multiplicaciones.

Gracias

package control6;
import java.util.Scanner;
public class Control6 {

      public static void main(String[] args) {
    int sumaPositivos = 0;
    int multi = 0;
    int contarcero = 0;
    int acumulacionmulti = 0;
        Scanner sc=new Scanner(System.in);
        int n;
        do {
            System.out.println("Ingresa un numero, cuando quieras terminar escribe 99999: ");
            n= sc.nextInt();
            if(n==0){
                System.out.println("El numero "+n+" es Cero");
                contarcero++;
            } else{
                if(n>0 && n!= 99999){
                    System.out.println("El numero "+n+" es positivo");
                    sumaPositivos = sumaPositivos + n;
                }else{
                    if(n<0 && n!= 99999){
                    System.out.println("El numero "+n+" es negativo");
                    multi = n*=n;
                   acumulacionmulti = multi++;

                    }    
                }
            } 
        }while(n != 99999);

        System.out.println("la suma de los numeros positivos introducidos es:  "+sumaPositivos);
        System.out.println("la acumulacion multiplicada de los numeros negativos introducidos es:  "+multi);
        System.out.println("la cantidad de ceros ingresados es:  "+contarcero);
    }
}

ese es el codigo que estoy haciendo

solución

Yo en mi caso, para ir acumulando o guardando lo que nos van dando la multiplicación de los números negativos, lo haría de esta manera.. multi *= n; que equivale a esto otro multi = multi * n;.

Pero haciendo esto tendríamos un problema, y es que el primer valor de multi es igual 0, y si vamos multiplicando cualquier número por 0, nos daría como resultado 0. Por lo tanto lo que haría es poner una condición que en caso de que se cumpla la condición de que el número ingresado es negativo y el valor de multi es 0, en vez de multiplicarlo, sería igualarlo al valor del número introducido, y ya a raíz de esto las siguientes veces que introduzcamos valores negativos ya sí, ir multiplicándolo por el valor guardado.

if (n < 0 && n != 99999) {
     System.out.println("El numero " + n + " es negativo");
     if (multi == 0) {
        multi = n;
     } else {
        multi *= n;
     }
}

Otra forma como bien ha comentado @Zeugirdor, es inicializar la variable multi con un valor de 1, y cuando se ingrese un valor negativo directamente hacer la multiplicación y acumulación.

int multi = 1;
...
if (n < 0 && n != 99999) {
    System.out.println("El numero " + n + " es negativo");
    multi *= n;
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *