1
resposta

[Sugestão] Melhoria para por no vídeo explicativo da professora.

Abaixo segue uma sugestão de melhoria na classe main para que ao ser digitado algum valor fora de 0 e 1 o programa reconheça avise ao usuário e volte ao processamento normal:

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

public class NovaPrincipal {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o limite do cartão: ");
        double limite = leitura.nextDouble();
        CartaoDeCredito cartao = new CartaoDeCredito(limite);

        int sair = 1;
        while (sair != 0) {
            System.out.println("Digite a descrição da compra:");
            String descricao = leitura.next();

            System.out.println("Digite o valor da compra:");
            double valor = leitura.nextDouble();

            Compra compra = new Compra(descricao, valor);
            boolean compraRealizada = cartao.lancaCompra(compra);

            if (compraRealizada) {
                System.out.println("Compra realizada!");
                boolean entradaValida = false;
                while (!entradaValida) {
                    System.out.println("Digite 0 para sair ou 1 para continuar:");
                    if (leitura.hasNextInt()) { // Verifica se a entrada é um número inteiro
                        sair = leitura.nextInt();
                        if (sair == 0 || sair == 1) {
                            entradaValida = true; // Aceita apenas 0 ou 1
                        } else {
                            System.out.println("Valor inválido! Digite 0 para sair ou 1 para continuar.");
                        }
                    } else {
                        System.out.println("Entrada inválida! Por favor, digite um número.");
                        leitura.next(); // Descarta a entrada inválida
                    }
                }
            } else {
                System.out.println("Saldo insuficiente!");
                sair = 0;
            }
        }

        System.out.println("***********************");
        System.out.println("COMPRAS REALIZADAS:\n");

        Collections.sort(cartao.getCompras());

        for (Compra c : cartao.getCompras()) {
            System.out.println(c.getDescricao() + " - " + c.getValor());
        }
        System.out.println("\n***********************");

        System.out.println("\nSaldo do cartão: " + cartao.getSaldo());
    }
}
1 resposta

Olá, Renato. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Muito bom como você adicionou a verificação de entrada para garantir que apenas valores válidos sejam aceitos no loop. Isso melhora bastante a experiência do usuário.

Veja uma outra forma de fazer, simplificando essa lógica usando um do-while, evitando a necessidade de um boolean extra:


int sair;
do {
    System.out.println("Digite 0 para sair ou 1 para continuar:");
    while (!leitura.hasNextInt()) {
        System.out.println("Entrada inválida! Por favor, digite um número.");
        leitura.next();
    }
    sair = leitura.nextInt();
} while (sair != 0 && sair != 1);

Isso mantém a validação de entrada e reduz um pouco a complexidade do código.

Conte com o apoio do Fórum. Abraços e bons estudos!