Java - Ayuda codigo bucle (ejercicio

 
Vista:

Ayuda codigo bucle (ejercicio

Publicado por Becario11 (1 intervención) el 25/11/2019 19:50:20
Hola, a ver tengo un problema, en la salida por pantalla me sale lo siguiente:

Introducir símbolo de la acción: BBVA
¿Cuantas veces has comprado esta acción? 2
¿Cuantas acciones? 100
¿A que precio por acción? 28
¿Cuantas acciones? 200
¿A que precio por acción? 16
¿ Cual es el precio actual de la acción? 10
El beneficio/perdida es:-1200

BUILD SUCCESSFUL (total time: 1 minute 27 seconds)

El problema es que solo me toma en cuenta la última operacion (16*200-10*200= -1200), yo lo que quiero es que haga esto (100*28+200*16)-(300*10) teniendo en cuenta asi la primera operacion tambien y el total de acciones a vender, no solo la segunda parte

Es decir quiero que me sume el total de los beneficios, y luego se le reste haciendo el calculo del total de las acciones, no se si me explico...

Otra cosa que no logro sacar es que tengo que hace una excepción para que al meter un número negativo en ¿Cuantas veces has comprado esta acción? el programa envie un mensaje diciendo que ese numero ese negativo y se cierre el programa, hasta ahora solo he conseguido hacerlo pero para cuando se escribe algun caracter. Sin mas os dejo el código a ver si me podeis ayudar que llevo toda la tarde dándole vueltas...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class AccionesBanco {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
           // TODO code application logic here
         Scanner teclado = new Scanner(System.in);
         int veces= 0;
         String banco;
         int compra;
         int numacciones = 0;
         int preciocompra = 0;
         int precioventa = 0;
         int parcial = 0;
         int total = 0;
         int i;
 
         System.out.print("   Introducir símbolo de la acción: ");
         banco=teclado.nextLine();
 
         System.out.print("¿Cuantas veces has comprado esta acción? ");
          veces=teclado.nextInt();
 
         for (i=0; i<veces; i++) {
 
             System.out.print("¿Cuantas acciones? ");
             numacciones=teclado.nextInt();
             System.out.print("¿A que precio por acción? ");
             preciocompra=teclado.nextInt();
        }
             System.out.print("¿ Cual es el precio actual de la acción? ");
             precioventa=teclado.nextInt();
 
             parcial = numacciones*precioventa-numacciones*preciocompra;
             total = total + parcial;
 
             System.out.print("El beneficio/perdida es:" + total);
 
       }
 
}
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 pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda codigo bucle (ejercicio

Publicado por pablo (239 intervenciones) el 27/11/2019 17:35:09
Hola Becario11, pues bien tengo una pregunta si cuando haces este for

1
2
3
4
5
6
7
for (i=0; i<veces; i++) {
 
    System.out.print("¿Cuantas acciones? ");
    numacciones=teclado.nextInt();
    System.out.print("¿A que precio por acción? ");
    preciocompra=teclado.nextInt();
}

se va a estar sobreescribiendo esa variable cada vez que pases por el que quieres hacer exactamente con esa variable por que al llegar al ultimo no va a tener el valor definitivo que necesitas si no el último que le pasaste entiendo yo entonces ahí el bucle yo no lo entiendo o no le veo la utilidad de tenerlo, ahora si lo haces de la siguiente manera quizas si sea lo que necesitas pienso yo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class AccionesBanco {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
           // TODO code application logic here
      int veces = 4;
       int numacciones = 2;
      int precioaccion = 50000;
      for(int i = 0; i< veces; i++){
 
      	numacciones += numacciones ;
        precioaccion += precioaccion;
 
      }
 
       System.out.println("El número de acciones es: " + numacciones);
 
       System.out.println("El precio de acciones es: " + precioaccion);
 
	}
}

Respecto a esta línea

1
parcial = numacciones*precioventa-numacciones*preciocompra;

Recuerda que java funciona con un principio matemático llamado orden de precedencia, entonces la acción que hará sí lo pasas como lo tienes será multiplicar y luego restar numacciones y luego multiplicarlo por el precio compra; que haría yo lo colocaría así
1
parcial = (numacciones*precioventa)-(numacciones*preciocompra)

Que me devuelve esto como resultado o que me asegura esta acción es que va a realizar primero las multiplicaciones y luego hará la resta.
Y para lo que planteas arriba no te va a servir una variable pues el mismo nombre te lo dice una variable que varia y cada vez que insertes un valor se va a guardar con ese valor que tienes te recomiendo que lo guardes en un array de tipo enteros y el tamaño del array será el número de veces que le asigne el usuario igual un array para el precio de la acción y vas llenando el array con los valores que el usuario le va pasando.Yo lo vería de la siguiente manera lo mismo para precio acción

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class AccionesBanco {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
           // TODO code application logic here
      Scanner entrada = new Scanner(System.in);
      	int veces = 4;
    	int[] numacciones = new int[veces];
      for(int i = 0; i< numacciones.length; i++){
      	System.out.print("Ingrese el número en la accion " + (i+1) + " :");
		numacciones[i] = entrada.nextInt();
      }
    }
}

Después al momento de sumarlo lo que puedes hacer es nuevamente recorre el arreglo que ya esta lleno y sumar ese campo de la siguiente manera

1
2
3
4
for(int i = 0; i< numacciones.length; i++){
     suma += numacciones[i];
 
}

Y así vas cualquier cosa preguntas

Saludos.
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