Java - Hola. Soy principiante, me pueden ayudar a poner el ciclo do while en este programa por favor?

 
Vista:
sin imagen de perfil

Hola. Soy principiante, me pueden ayudar a poner el ciclo do while en este programa por favor?

Publicado por Alfredo (3 intervenciones) el 05/02/2023 04:08:29
Es lo que llevo del programa, he intentado poner el ciclo, pero me da error.

Problema:
Una tienda de equipos celulares y gagets tiene distintas promociones dependiendo
la marca, cantidad de piezas y % de promosion

las marcas son las siguientes

Samsung 10% de descuento en todos los productos
10 celulares con Precio de $5400 8 gadgets $1200

LG 20% en teléfonos y 15% en Gadgets de descuento
5 celulares con Precio de $4500 5 gadgets $ 1000

Apple 8% de descuento en todos los productos
2 celulares con precio de $7900 3 gadgets $3500

El programa debe de mostrar cuanto se ahorró el cliente de su compra, el programa debe finalizar y notificar cuando todas las promociones fueron agotadas.

Mi código:


import java.util.Scanner;

/**
*
* @author si
*/
public class Telefonos {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcion;
int cantidadTelefonos;
int cantidadGadgets;
int samsungTelefonos = 10;
int samsungGadgets = 8;
int lgTelefonos = 5;
int lgGadgets = 5;
int appleTelefonos = 2;
int appleGadgets = 3;
int precioSamsungTelefonos = 5400;
int precioSamsungGadgets = 1200;
int precioLgTelefonos = 4500;
int precioLgGadgets = 3500;
int precioAppleTelefonos = 7900;
int precioAppleGadgets = 3500;
double descuentoSamsung = 0.1;
double descuentoLgTelefonos = 0.2;
double descuentoLgGadgets = 0.15;
double descuentoApple = 0.08;
double precioTotal = 0;
double ahorro = 0;

System.out.println("Bienvenido a la Tienda de Celulares y Gadgets");
System.out.println("Seleccione la marca que desea comprar:");
System.out.println("1. Samsung");
System.out.println("2. LG");
System.out.println("3. Apple");
opcion = scanner.nextInt();

System.out.println("¿Cuántos teléfonos desea comprar?");
cantidadTelefonos = scanner.nextInt();
System.out.println("¿Cuántos gadgets desea comprar?");
cantidadGadgets = scanner.nextInt();
{

switch (opcion) {
case 1:

if (cantidadTelefonos > 10 || cantidadGadgets > 8) {
System.out.println("Lo sentimos, la promoción ha sido agotada o ya no hay en existencia.");
} else {
samsungTelefonos -= cantidadTelefonos;
samsungGadgets -= cantidadGadgets;
precioTotal = (cantidadTelefonos * precioSamsungTelefonos) + (cantidadGadgets * precioSamsungGadgets);
ahorro = precioTotal * descuentoSamsung;
precioTotal -= ahorro;
System.out.println("Usted ha ahorrado $" + ahorro + " en su compra.");
System.out.println("El precio total de su compra es de $" + precioTotal);
}
break;
case 2:

if (cantidadTelefonos > 5 || cantidadGadgets > 5) {
System.out.println("Lo sentimos, la promoción ha sido agotada o ya no hay en existencia.");
} else {
lgTelefonos -= cantidadTelefonos;
lgGadgets -= cantidadGadgets;
precioTotal = (cantidadTelefonos * precioLgTelefonos) + (cantidadGadgets * precioLgGadgets);
ahorro = precioTotal * descuentoLgTelefonos;
precioTotal -= ahorro;
System.out.println("Usted ha ahorrado $" + ahorro + " en su compra.");
System.out.println("El precio total de su compra es de $" + precioTotal);
}
break;
case 3:

if (cantidadTelefonos > 2 || cantidadGadgets > 3) {
System.out.println("Lo sentimos, la promoción ha sido agotada o ya no hay en existencia.");
} else {
appleTelefonos -= cantidadTelefonos;
appleGadgets -= cantidadGadgets;
precioTotal = (cantidadTelefonos * precioAppleTelefonos) + (cantidadGadgets * precioAppleGadgets);
ahorro = precioTotal * descuentoApple;
precioTotal -= ahorro;
System.out.println("Usted ha ahorrado $" + ahorro + " en su compra.");
System.out.println("El precio total de su compra es de $" + precioTotal);
break;
}

return;
}
}
}
}
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 Richtofen

Hola. Soy principiante, me pueden ayudar a poner el ciclo do while en este programa por favor?

Publicado por Richtofen (19 intervenciones) el 05/02/2023 12:21:10
Cual es la condicion de parada?

El return; que tienes al final te va a dar problemas con un ciclo, quitalo y si lo encapsulas todo dentro de un do while cuando se cumpla la condición de parada no deberias tener problema.
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
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

Hola. Soy principiante, me pueden ayudar a poner el ciclo do while en este programa por favor?

Publicado por Kabuto (1383 intervenciones) el 05/02/2023 13:30:01
El ciclo while ha de terminar cuando TODAS estas variables alcancen valor 0

1
2
3
4
5
6
int samsungTelefonos = 10;
int samsungGadgets = 8;
int lgTelefonos = 5;
int lgGadgets = 5;
int appleTelefonos = 2;
int appleGadgets = 3;

Así que la expresión para la condición del while, es que se repita MIENTRAS alguna de esas variables sea mayor que 0.
Puede ser un poco fea y engorrosa de escribir y leer, pero es la que es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
 
    //Declaración de variables
 
    do {
        //menú
        //introducir compra de teléfonos y gadgets
        //computar
        //mostrar resultado
    }while(samsungTelefonos > 0 || samsungGadgets > 0 || lgTelefonos > 0 || lgGadgets > 0 ||  appleTelefonos > 0 || appleGadgets > 0);
 
    //Finalizar programa
 
}


Aunque no sea estrictamente necesario, siempre es conveniente hacer que el método "main" principal sea lo más legible posible. Por lo que podemos trasladar esa expresión tan "fea" a otro método boolean y así el bucle queda más elegante.
La funcionalidad es la misma, es solo por una cuestión de "legibilidad":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
 
    //Declaración de variables
 
    do {
        //menú
        //introducir compra de teléfonos y gadgets
        //computar
        //mostrar resultado
    }while(aunQuedanPromos());
 
    //Finalizar programa
 
}
 
public static boolean aunQuedanPromos() {
 
    return samsungTelefonos > 0 || samsungGadgets > 0 || lgTelefonos > 0 || lgGadgets > 0 ||  appleTelefonos > 0 || appleGadgets > 0;
 
}
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