1
resposta

[Projeto] Fiz diferente, achei que pode estar errado pois não está com o for.

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;
    }





}
1 resposta

Olá Rodolfo! Como vai?

Não se preocupe por não ter utilizado o for na sua solução. O for é apenas uma das maneiras de iterar sobre elementos em uma lista ou coleção. No seu caso, você está utilizando um while para gerenciar o fluxo do programa e adicionar compras à lista, o que é perfeitamente válido.

O uso do for é comum quando você precisa iterar sobre todos os elementos de uma coleção para realizar alguma operação em cada um deles. Por exemplo, se você quisesse exibir todos os itens da lista de compras após cada compra, um for seria uma boa escolha:

for (Compras compra : listaDeCompras) {
    System.out.println(compra);
}

No entanto, se o seu fluxo de controle está funcionando bem com o while e atende aos requisitos do seu projeto, não há problema algum em não usar o for. Cada estrutura de controle tem suas próprias vantagens e é importante escolher aquela que melhor se adapta à lógica do seu programa.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.