Boa noite, tudo bem? Infelizmente estou tendo dificuldades em utilizar o compareTo no meu código junto da implementação da interface Comparable. Não entendi muito bem como fazer o Override para que a comparação seja executada... poderiam me ajudar com isso e até mesmo o que pode ser melhorado no meu código?
Classe principal:
import java.util.Scanner;
public class App {
public static void main(String[] args){
int option = -1;
Scanner scanner = new Scanner(System.in);
System.out.println("Digite o limite do seu cartão: ");
Credit creditCard = new Credit(scanner.nextFloat());
while (option != 0) {
System.out.println("Digite a descrição do produto: ");
String description = scanner.next();
System.out.println("Digite o valor da compra: ");
float price = scanner.nextFloat();
Product product = new Product(description, price);
boolean bought = creditCard.buyProduct(product);
if (bought) {
System.out.println("Compra realizada!");
System.out.println("Saldo atual: " + creditCard.getBalance());
System.out.println("Digite 0 para sair e 1 para continuar");
option = scanner.nextInt();
switch (option) {
case 0:
option = 0;
break;
case 1:
break;
default:
System.out.println("Opção inválida.");
option = 0;
break;
}
} else {
option = 0;
System.out.println("Saldo insuficiente.");
}
}
creditCard.menu();
scanner.close();
}
}
Classe do cartão:
import java.util.ArrayList;
import java.util.List;
public class Credit {
private float limit;
private float balance;
private List<Product> purchases;
public Credit(float limit) {
this.limit = limit;
balance = this.limit;
this.purchases = new ArrayList<>();
}
public float getLimit() {
return limit;
}
public void setLimit(float credit) {
this.limit = credit;
}
public float getBalance() {
return balance;
}
public List<Product> getPurchases() {
return purchases;
}
public boolean buyProduct(Product product) {
if (product.getPrice() <= this.balance) {
this.purchases.add(product);
this.balance -= product.getPrice();
return true;
} else {
return false;
}
}
public void menu(){
System.out.println("Produtos comprados: " + this.getPurchases());
System.out.println("Saldo restante: " + this.getBalance());
}
}
Classe do produto:
public class Product implements Comparable<Product>{
private String description;
private float price;
public Product(String description, float price) {
this.description = description;
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public String toString() {
return this.description + ": " + this.price;
}
@Override
public int compareTo(Product otherProduct) {
if (this.price < otherProduct.price) {
return -1;
}
if (this.price > otherProduct.price) {
return 1;
}
else {
return 0;
}
}
}