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

Nueva app

*** Codigo realizado antes de ver los videos, sin seguir las instrucciones. Lo hice como me parecia a mi por eso es distinto *** MAIN:

import Modelos.Productos;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        double limiteTarjeta;
        String descripcionCompra;
        double valorCompra;
        int condicion = 1;
        List<Productos> producto = new ArrayList<>();

        Scanner entrada = new Scanner(System.in);
        System.out.println("Escriba el limite de la tarjeta:");
        limiteTarjeta = entrada.nextDouble();
        entrada.nextLine(); // limpio memoria

        do {
            System.out.println("Escriba la descripción de la compra:");
            descripcionCompra = entrada.nextLine();
            System.out.println("Escriba el valor de la compra:");
            valorCompra = entrada.nextDouble();

            if (limiteTarjeta >= valorCompra){
                producto.add(new Productos(descripcionCompra,valorCompra));
                limiteTarjeta -= valorCompra;
                System.out.println("¡Compra realizada!");
            }else {
                System.out.println("¡Saldo insuficiente!");
                break;
            }
            System.out.println("Escriba 0 para salir o 1 para continuar:");
            condicion = entrada.nextInt();
            entrada.nextLine(); //limpio la memoria
        }while (condicion == 1);

        //ordeno la lista de productos segun el precio
        producto.sort(Comparator.comparing(Productos::getPrecio));

        //itero mediante un for para ir mostrando uno por uno
        System.out.println("**********\n COMPRAS REALIZADAS: ");
        for (Productos p : producto){
            System.out.println("- " + p.getNombre() + " $" + p.getPrecio());
        }

        System.out.println("**********\n Saldo de la tarjeta: $" + limiteTarjeta);
    }
}

PRODUCTOS:

package Modelos;

public class Productos {
    private String nombre;
    private double precio;

    public Productos(String nombre, double precio) {
        this.nombre = nombre;
        this.precio = precio;
    }

    public String getNombre() {
        return nombre;
    }

    public double getPrecio() {
        return precio;
    }

}
1 respuesta

¡Hola Bianca, espero que estés bien!

Primero que nada, ¡felicitaciones por haber llegado al final del curso y por tu iniciativa de crear una aplicación por tu cuenta! Tu código se ve muy bien estructurado y parece que has entendido bien cómo trabajar con listas y colecciones en Java.

Aquí hay algunas cosas que podrías considerar para mejorar o ajustar tu aplicación:

  1. Validación de Entrada: Actualmente, el programa no maneja entradas no válidas. Por ejemplo, si el usuario ingresa un valor que no es un número cuando se espera uno, el programa podría fallar. Podrías considerar agregar un manejo de excepciones para mejorar la robustez del programa.

  2. Nombres de Variables: Aunque el nombre producto funciona, podrías considerar usar un nombre más descriptivo como productosComprados para que quede claro que se trata de una lista de productos comprados.

  3. Formato de Salida: Cuando imprimes el saldo restante de la tarjeta o los productos comprados, podrías formatear los números para mostrar solo dos decimales, lo cual es común en valores monetarios. Puedes usar String.format para esto. Por ejemplo:

    System.out.println("Saldo de la tarjeta: $" + String.format("%.2f", limiteTarjeta));
    
  4. Comentarios: Es una buena práctica comentar el código para que otros (o tú mismo en el futuro) puedan entender rápidamente qué hace cada parte. Aunque ya tienes algunos comentarios, podrías considerar agregar más para explicar las secciones clave.

  5. Uso de break: En el caso de saldo insuficiente, usas break para salir del bucle. Esto está bien, pero asegúrate de que es el comportamiento que deseas. Si prefieres que el usuario tenga la opción de intentar otra compra, podrías simplemente mostrar el mensaje y continuar el bucle.

Espero que estas sugerencias te sean útiles. ¡Continúa explorando y experimentando con Java! Espero haber ayudado y buenos estudios!