Fiz o exercício proposto e não utilizei o for da iteração, isso dá algum problema e pra que é utilizado?
Github: https://github.com/DolfoMendes/Exercicios-Array-Comparable.git Pasta: exerciciosarray (Arquivos de Classe: Principal, Compras e ContaCartao
CLASSE MAIN
package br.com.alura.exerciciocartaodecredito;
import java.util.*;
public class Principal {
public static void main(String[] args) {
List<Compras> listaDeCompras = new ArrayList<>();
var saldoCartao = new ContaCartao();
Scanner leitura = new Scanner(System.in);
System.out.println("Qual o valor do cartão?");
saldoCartao.setSaldo(leitura.nextDouble());
Collections.sort(listaDeCompras);
int opcao = 1;
while ( opcao != 0 && saldoCartao.getSaldo() > 0){
leitura.nextLine();
System.out.println("Seu saldo é de: " +saldoCartao.getSaldo());
var novaCompra = new Compras();
System.out.println("Qual a compra?");
novaCompra.setNome(leitura.nextLine());
System.out.println("Qual o valor da compra?");
novaCompra.setPreco(leitura.nextDouble());
listaDeCompras.add(novaCompra);
Collections.sort(listaDeCompras);
if (novaCompra.getPreco() > saldoCartao.getSaldo()){
System.out.println(" O valor da compra excede o saldo, voce tem: " + saldoCartao.getSaldo() + " de saldo.");
System.out.println("Retornando ao menu para novas compras: ");
opcao = 1;
} else if (novaCompra.getPreco() <= saldoCartao.getSaldo() && saldoCartao.getSaldo() > 0) {
saldoCartao.setSaldo(saldoCartao.getSaldo() - novaCompra.getPreco());
System.out.println("Compra realizada com sucesso!");
System.out.println("Saldo atualizado do cartão: " +saldoCartao.getSaldo());
System.out.println("Sua lista de compras no momento contém: " +listaDeCompras);
if(saldoCartao.getSaldo() > 0) {
System.out.println("Digite 1 para realizar mais compras ou 0 para sair: ");
opcao = leitura.nextInt();
}
else {
System.out.println("Você não tem mais saldo para efetuar novas compras");
}
}
}
}
}
CLASSE COMPRAS
package br.com.alura.exerciciocartaodecredito;
public class Compras implements Comparable <Compras> {
private String nome;
private double preco;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public void lancarCompra(){
}
@Override
public String toString() {
return "Compra: " + nome + " | Valor: R$" + String.format("%.2f", preco);
}
@Override
public int compareTo(Compras o) {
return Double.valueOf(this.preco).compareTo(Double.valueOf(o.preco));
}
}
CLASSE CONTACARTAO
package br.com.alura.exerciciocartaodecredito;
public class ContaCartao {
private double saldo;
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
}