Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Presentando el desafío

public class Tarjeta {

    private int montoTarjeta;

    public int getMontoTarjeta() {
        return montoTarjeta;
    }

    public void setMontoTarjeta(int montoTarjeta) {
        this.montoTarjeta = montoTarjeta;
    }
}
public class Producto{

    private String nombreDelProducto;
    private int valorDelProducto;

    public Producto(String nombreDelProducto, int valorDelProducto){
        this.nombreDelProducto = nombreDelProducto;
        this.valorDelProducto = valorDelProducto;
    }

    public String getNombreDelProducto() {
        return nombreDelProducto;
    }

    public void setNombreDelProducto(String nombreDelProducto) {
        this.nombreDelProducto = nombreDelProducto;
    }

    public int getValorDelProducto() {
        return valorDelProducto;
    }

    public void setValorDelProducto(int valorDelProducto) {
        this.valorDelProducto = valorDelProducto;
    }

    @Override
    public String toString() {
        return nombreDelProducto + " - $" + valorDelProducto;
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Tarjeta tarjeta = new Tarjeta();
        ArrayList<Producto> listaDeProductos = new ArrayList<>();
        int indice = 1;

        //Solicitando datos en consola
        Scanner teclado = new Scanner(System.in);
        System.out.println("Digite el monto de la tarjeta");
        int monto = teclado.nextInt();
        tarjeta.setMontoTarjeta(monto);
        System.out.println("Saldo: $" + tarjeta.getMontoTarjeta());

        while (indice == 1){
            while (indice == 1){
                teclado.nextLine();
                System.out.println("Nombre del producto");
                String nombreDelProducto = teclado.nextLine();

                System.out.println("Valor del producto");
                int valorDelProducto = teclado.nextInt();

                Producto producto = new Producto(nombreDelProducto, valorDelProducto);
                listaDeProductos.add(producto);

                System.out.println("Digite 1, para agregar otro producto, o 2 para totalizar compra");
                indice = teclado.nextInt();
            }
            System.out.println("");
            //Ordenar los productos de forma ascendente (valor)
            Collections.sort(listaDeProductos, Comparator.comparingInt(Producto::getValorDelProducto));

            //Mostrar todos los productos agregados
            System.out.println("Productos agregados:");
            for (Producto p : listaDeProductos){
                System.out.println(p);
            }
            System.out.println("");
            //Totalizar el valor de todos los productos
            int totalProductos = 0;
            for (Producto p : listaDeProductos){
                totalProductos += p.getValorDelProducto();
            }
            System.out.println("Subtotal de los productos: $" + totalProductos);
            if (tarjeta.getMontoTarjeta() >= totalProductos){
                System.out.println("*********************************");
                System.out.println("Saldo restante: $" + (tarjeta.getMontoTarjeta() - totalProductos));
                System.out.println("Digite 1, para agregar más productos.");
                System.out.println("Digite 2, para realizar compra.");
                indice = teclado.nextInt();
                if (indice != 1){
                    System.out.println("");
                    System.out.println("*********************************");
                    System.out.println("Total:       $" + totalProductos);
                    System.out.println("Pago:        $" + tarjeta.getMontoTarjeta());
                    System.out.println("Nuevo saldo: $" + (tarjeta.getMontoTarjeta() - totalProductos));
                    System.out.println("¡Transacción EXITOSA!");
                    System.out.println("¡Gracias por su compra!");
                }
            } else {
                System.out.println("");
                System.out.println("*********************************");
                System.out.println("¡Saldo insuficiente!, hasta pronto.");
                indice = 2;
            }
        }
    }
}

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Duvan, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!