buen dia, asi quedo mi codigo, Main.java
package one.aluracursos.proyectofinal.main;
import one.aluracursos.proyectofinal.model.Compra;
import one.aluracursos.proyectofinal.model.TarjetaCredito;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
double limite = 0.0;
try {
System.out.println("Limite de la tarjeta ");
limite = leer.nextDouble();
} catch (Exception e) {
System.out.println("Digite solo numeros , en limite tarjeta credito" + e.toString());
return;
}
TarjetaCredito tc = new TarjetaCredito(limite);
int salir = 1;
while (salir != 0) {
System.out.print("Descripion producto comprar : ");
String describe = leer.next();
double valor = 0;
try {
System.out.print("Valor producto : ");
valor = Double.valueOf(leer.next());
} catch (Exception e) {
System.out.println("Digite solo numeros en valor compra " + e.toString());
return;
}
Compra compra = new Compra(describe, valor);
boolean compraRealizada = tc.lanzarCompra(compra);
if (compraRealizada) {
System.out.println("item de compras valido");
System.out.println("Escriba [0]Salir [1]Continuar");
try {
salir = leer.nextInt();
} catch (Exception e) {
System.out.println("Digite un numero entero, 0=Salir, cualquier otro numero=Continuar ");
return;
}
} else {
System.out.println("Saldo Insificiente, revisar su cupo de TC");
salir = 0;
}
} //wend
System.out.println("Compras realizadas");
Collections.sort(tc.getListaCompras());
double totalCompras = 0;
for (Compra compra : tc.getListaCompras()) {
System.out.println(compra.toString());
totalCompras += compra.getValor();
}
System.out.println("Valor total compra " + totalCompras);
System.out.println("Saldo tarjeta " + tc.getSaldo());
}
}
Compra.java
package one.aluracursos.proyectofinal.model;
public class Compra implements Comparable<Compra> {
private String descripcion;
private double valor;
// constructor
public Compra(String descripcion, double valor) {
this.descripcion = descripcion;
this.valor = valor;
}
// getters
public String getDescripcion() {
return descripcion;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return "Item {" +
"descripcion='" + descripcion + '\'' +
", valor=" + valor +
'}';
}
@Override
public int compareTo(Compra otraCompra) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(otraCompra.getValor())) ;
}
}
TarjetaCredito.java
package one.aluracursos.proyectofinal.model;
import java.util.ArrayList;
import java.util.List;
public class TarjetaCredito {
private double limite;
private double saldo;
private List<Compra> listaCompras;
public TarjetaCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.listaCompras = new ArrayList<>();
}
//getters
public double getLimite() {
return limite;
}
public List<Compra> getListaCompras() {
return listaCompras;
}
public double getSaldo() {
return saldo;
}
// metodos
public boolean lanzarCompra(Compra compra){
if(this.saldo >= compra.getValor()){
this.saldo -= compra.getValor();
this.listaCompras.add(compra);
return true;
}
return false;
}
}
- Tener en cuenta que están dentro de packages (revisar su packages e imports)
- Nuevo que tiene sumar el total de la factura, para mostrar al cliente
- Validación de datos numericos
pueden descargarlo de : https://github.com/ravila64/16-compras-tarjeta-credito
Saludos, Rene Ávila A., Bog, Col.