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

[Proyecto] asi lo hice yo :D

import modelo.Cliente;
import modelo.Tienda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

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

    Scanner sc = new Scanner(System.in);
    Cliente cliente = new Cliente();
    ArrayList<Tienda> compras = new ArrayList<>();

    System.out.println("Ingresa tu saldo");
    cliente.setSaldo(sc.nextInt());


    int opcion = 1;

    while (cliente.getSaldo() > 0 && opcion == 1) {
        Tienda tienda = new Tienda();


        System.out.println("Ingrese el producto que desea comprar");
        tienda.setCompra(sc.next());

        System.out.println("Ingrese el precio del producto");
        tienda.setPrecio(sc.nextInt());

        if(cliente.comprar(tienda.getPrecio())){
            System.out.println("Compra realizada");
            compras.add((tienda));

        }else {
            System.out.println("sin fondos suficientes");
            break;
        }

        System.out.println("¿Deseas seguir comprando? 1 = si 2 = no");
        opcion = sc.nextInt();

    }

    Collections.sort(compras);
    for (Tienda producto : compras) {
        System.out.println(producto);
    }
    System.out.println("te quedo un total de " + cliente.getSaldo());

}

}

package modelo;

public class Tienda implements Comparable<Tienda>{
    private int precio;
    private String descripcion;
    private int descuento;
    private String compra;

//     @Override
//     public Tienda (int precio, String descripcion){
//         return;
//     }

    public String getDescripcion() {
        return descripcion;
    }

    public int getPrecio() {
        return precio;
    }

    public void setPrecio(int precio) {
        this.precio = precio;
    }

    public String getCompra() {
        return compra;
    }

    public void setCompra(String compra) {
        this.compra = compra;
    }

    public int getDescuento() {
        return descuento;
    }

    public void setDescuento(int descuento) {
        this.descuento = descuento;
    }

    @Override
    public int compareTo(Tienda otra) {
        return this.precio - otra.precio;
    }

    @Override
    public String toString() {
        return compra + " -$" + precio;
    }
}

package modelo;

public class Cliente {
    private int saldo;


    public int getSaldo() {
        return saldo;
    }

    public void setSaldo(int saldo) {
        this.saldo = saldo;
    }

    public boolean comprar(int precio){
        if(saldo >= precio){
            saldo -= precio;
            return true;
        }else {
            return false;
        }

    }



}
1 respuesta

Hola Sol,

¡Gracias por compartir tu proyecto! Parece que has trabajado bastante en él y has implementado varias funcionalidades interesantes. Aquí hay algunos comentarios y sugerencias que podrían ayudarte a mejorar tu código:

  1. Constructor en la clase Tienda: Veo que has comentado un constructor en la clase Tienda. Si deseas inicializar objetos Tienda con ciertos valores al momento de su creación, puedes implementar un constructor que acepte parámetros. Por ejemplo:

    public Tienda(int precio, String descripcion) {
        this.precio = precio;
        this.descripcion = descripcion;
    }
    

    Luego, puedes crear nuevos objetos Tienda así: Tienda tienda = new Tienda(100, "Producto A");.

  2. Uso de Scanner: Cuando usas Scanner para leer entradas del usuario, es una buena práctica cerrar el Scanner al final para liberar recursos. Puedes hacerlo con sc.close(); al final del método main.

  3. Manejo de excepciones: Considera manejar posibles excepciones al leer entradas del usuario, especialmente cuando esperas un int y el usuario podría ingresar un valor no numérico. Puedes usar un bloque try-catch para manejar estas situaciones.

  4. Ordenación de la lista compras: Estás usando Collections.sort(compras); para ordenar la lista de compras por precio, lo cual es genial. Asegúrate de que el método compareTo en la clase Tienda esté implementado correctamente, lo cual parece estar bien en tu código.

  5. Descuentos: Veo que tienes un atributo descuento en la clase Tienda, pero no parece estar siendo utilizado. Si planeas implementar descuentos, podrías considerar cómo aplicarlos al precio final de cada producto.

  6. Salida de datos: En el método toString de la clase Tienda, podrías incluir más detalles si lo deseas, como la descripción del producto o el descuento aplicado.

Espero que estas sugerencias te sean útiles para seguir mejorando tu proyecto. ¡Es un gran paso haber llegado hasta aquí y estoy seguro de que seguirás aprendiendo y creando cosas increíbles!

Espero haber ayudado y ¡buenos estudios!