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

Duda

He completado el desafio al final en cuanto al curso de Java: Trabajar con listas y colecciones de datos. Me gustaria obtener feedback acerca del programa que codifique poniendo aprueba mis conocimientos.

package com.aluracursos.desafio.principal;

import com.aluracursos.desafio.models.Compra;
import com.aluracursos.desafio.models.Tarjeta;

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

public class Main {
    public static Scanner input = new Scanner(System.in);
    public static ArrayList<Compra> listaDeCompras = new ArrayList<>();
    public static void main(String[] args) {
        menu();
    }

    private static void menu() {
        String descripcion;
        double valorCompra;
        double balance;
        byte op=0;

        System.out.print("Digite el limite de la tarjeta: ");
        balance = input.nextDouble();
        Tarjeta  tarjeta = new Tarjeta(balance);

        do{
            input.nextLine();

            System.out.print("Escriba la descripción de la compra: ");
            descripcion = input.nextLine();

            System.out.print("Digite el valor de la comra: ");
            valorCompra = input.nextDouble();

            if(valorCompra > tarjeta.getBalance()){
                System.out.println("Saldo insuficiente");
                finalizarCompra();
                System.out.println("\nSaldo disponible: " + tarjeta.getBalance() + "\n");
                op = 0;
            }else{
                tarjeta.setBalance(tarjeta.getBalance()-valorCompra);
                listaDeCompras.add(new Compra(descripcion, valorCompra));
                System.out.println("Compra realizada!");
                System.out.print("Escriba 0 para salir o 1 para continuar: ");
                op  = input.nextByte();
                if (op == 0){
                    finalizarCompra();
                }
            }
        }while(op==1);
    }

    private static void finalizarCompra() {
        listaDeCompras.sort(Comparator.comparing(Compra::getValor));
        System.out.println("*******************************" +
                "\nCOMPRAS REALIZADAS:\n");
        for (Compra compra : listaDeCompras) {
            System.out.println(compra);
        }
        System.out.println("\n*******************************");
    }
}
1 respuesta

¡Hola Vicente, espero que estés bien!

¡Qué gusto ver que has completado el desafío del curso de Java! Tu código se ve bastante bien estructurado y parece que has aplicado correctamente los conceptos de listas y colecciones. Aquí te dejo algunos comentarios y sugerencias que podrían ayudarte a mejorar o simplemente a reflexionar sobre tu implementación:

  1. Validación de Entrada: Sería útil agregar validaciones adicionales para las entradas del usuario. Por ejemplo, asegurar que el valor de la compra no sea negativo y manejar posibles excepciones al leer los datos del usuario para evitar que el programa falle si se introduce un tipo de dato incorrecto.

  2. Uso de Comparable: Aunque estás utilizando un Comparator en tu código, el contexto sugiere que podrías implementar la interfaz Comparable en la clase Compra. Esto te permitiría definir un orden natural para los objetos de Compra y simplificar el proceso de ordenación.

  3. Mensajes al Usuario: Los mensajes que muestras al usuario son claros, pero podrías considerar agregar más detalles, como el saldo restante después de cada compra exitosa, para mejorar la experiencia del usuario.

  4. Refactorización del Código: Podrías considerar dividir el método menu en métodos más pequeños y específicos para mejorar la legibilidad y el mantenimiento del código. Por ejemplo, podrías tener métodos separados para realizarCompra y mostrarSaldo.

  5. Pruebas: Aunque no está directamente relacionado con el código, considera escribir pruebas unitarias para verificar que tu lógica funciona como esperas. Esto es una excelente práctica para asegurar la calidad del código.

Espero que estos comentarios te sean útiles y te ayuden a seguir mejorando tus habilidades en Java. ¡Sigue adelante con tu aprendizaje!

Espero haber ayudado y buenos estudios!