Java - Consulta con un codigo de operaciones matematicas simple

 
Vista:
sin imagen de perfil

Consulta con un codigo de operaciones matematicas simple

Publicado por Cesar (1 intervención) el 28/08/2021 03:26:09
Captura-de-pantalla-2021-08-27-212357

Hola soy nuevisimo en esto de la programacion, estaba haciendo esta clase en java y resulta que al restar me da resultados que no deverian, tengo una idea de lo que puede ser pero no se como solucionarlo, agradeceria muchisimo que me ayudasen y me explicasen porque falla
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Consulta con un codigo de operaciones matematicas simple

Publicado por Kabuto (1381 intervenciones) el 29/08/2021 01:03:23
Hola,
el problema se debe a un pequeño detalle, que sin embargo, es importante.

Atento a la línea que marco en negrita:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        System.out.print("¿Cuantos numeros desea restar?  ");
        int n = leer.nextInt();
        if (n > 0) {
            int total = 0;
            for (int cantNum = 1; cantNum <= n; cantNum++) {
                System.out.println("Ingrese numero: " + cantNum);
                int num = leer.nextInt();
                total = num - total;
            }
            System.out.println("Resultado de la resta: " + total);
        }
        else
            System.out.println("Solo acepto positivos");
    }

Si lo ejecutamos así, nos da un resultado extraño:
1
2
3
4
5
6
7
8
9
10
11
¿Cuantos numeros desea restar?
4
Ingrese numero: 1
10
Ingrese numero: 2
20
Ingrese numero: 3
30
Ingrese numero: 4
35
Resultado de la resta: 15

Sin embargo, si cambiamos la línea que marqué en negrita, por esta otra:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        System.out.print("¿Cuantos numeros desea restar?  ");
        int n = leer.nextInt();
        if (n > 0) {
            int total = 0;
            for (int cantNum = 1; cantNum <= n; cantNum++) {
                System.out.println("Ingrese numero: " + cantNum);
                int num = leer.nextInt();
                total = total - num;
            }
            System.out.println("Resultado de la resta: " + total);
        }
        else
            System.out.println("Solo acepto positivos");
    }

El cambio es muy sutil, sin embargo, el resultado cambia radicalmente. Y es porque las restas, el orden de los operandos, sí que es importante:
1
2
3
4
5
6
7
8
9
10
11
¿Cuantos numeros desea restar?
4
Ingrese numero: 1
10
Ingrese numero: 2
20
Ingrese numero: 3
30
Ingrese numero: 4
35
Resultado de la resta: -95
Ahora sí obtenemos un resultado coherente.
Porque ahora estamos haciendo restas a un único total

Pero antes, a cada operando que se recibía, se le restaba el total acumulado... y eso da un resultado muy diferente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar