Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como resolver o problema do input?

    System.out.println("Saldo do cliente: ");
    double saldo = leitura.nextDouble();
    Cliente c1 = new Cliente(nome, saldo);

    int sair = 1;
    while (sair != 0) {
        System.out.println("Qual produto você deseja comprar?");
        String prod = leitura.nextLine();

        System.out.println("Valor: ");
        double val = leitura.nextDouble();

Sempre que utilizo o nextLine após o nextDouble ocorre aquele probleminha que o java entende o enter (\n) como um character e passa direto pra pergunta do valor. Como eu resolveria para ele utilizar o NextLine antes de pedir novos valores?

1 resposta
solução!

O problema que você está enfrentando provavelmente ocorre porque o método nextDouble() não consome o caractere de quebra de linha (\n) deixado no buffer após a leitura do número. Quando você chama o nextLine() logo em seguida, ele lê esse caractere em branco e passa para a próxima pergunta.

Uma solução para esse problema é chamar o método nextLine() logo após a leitura do número, para consumir o caractere de quebra de linha antes de prosseguir com as próximas leituras. Ficaria assim:

System.out.println("Saldo do cliente: ");
double saldo = leitura.nextDouble();
leitura.nextLine(); // Consumir o caractere de quebra de linha

Cliente c1 = new Cliente(nome, saldo);

int sair = 1;
while (sair != 0) {
    System.out.println("Qual produto você deseja comprar?");
    String prod = leitura.nextLine();

    System.out.println("Valor: ");
    double val = leitura.nextDouble();
    leitura.nextLine(); // Consumir o caractere de quebra de linha

    // Resto do código...
}

Dessa forma, o nextLine() é chamado logo após cada leitura de número para consumir o caractere de quebra de linha, garantindo que o programa funcione corretamente.

Espero que isso ajude! Se você tiver mais dúvidas, é só perguntar.