String reading error - picking n from buffer

Asked

Viewed 523 times

1

I’m using a variable of the type String to get the answer whether or not to enter a new account.

When I start the program, in do while I ask for the name of the holder. The program does not display the question after reading the name of the holder, IE, informed the holder, teclei enter, not appear anything on the console. I have to hit enter again to display the question.

So I ask if you want to insert another account and after reading s or S, I have to type a second enter to ask for the name of the holder. I am clearing the buffer after entering the name and after answering the question. Follow the sources:

public class ContaCorrente {    

    private int numero;
    private double saldo;
    private String titular;

    private static int numeroReferencia = 0;

    public ContaCorrente(String titular){  
        this.atribuirNumero();  
        this.titular = titular;  
        this.saldo = 0;  
    }  

    public void depositar (double valor) {  
        this.saldo += valor;  
    }  

    public void sacar (double valor) {  
        this.saldo = this.saldo - valor;  
    }  

    public double consultarSaldo () {  
        return this.saldo;  
    }  

    public void atribuirNumero () {  
        numeroReferencia ++ ;  
        this.numero = numeroReferencia;  
    }  

    public void detalharConta () {  
        System.out.println("Conta " + numero);  
        System.out.println("Titular :" + titular);  
    }  

}  

another class:

import java.util.Scanner;    
public class ContaCorrentePrincipal {

    private static Scanner entrada = new Scanner(System.in);    
    private static final int QUANTIDADE_CONTAS = 3;

    public static void main (String args[]) {

        ContaCorrente[] contas = new ContaCorrente[QUANTIDADE_CONTAS];

        String resposta;

        do {  
            int i = 0;  
            contas[i] = criarConta();     
            System.out.println("Quer continuar inserindo contas?");  
            resposta = entrada.nextLine();      
            // limpar buffer  
            entrada.nextLine(); 
            i ++ ;  
        }while ((resposta.equals("s")) || (resposta.equals("S")));  
    }  

    private static ContaCorrente criarConta () {  
        String titular;      
        System.out.println("Informe o nome do titular");  
        titular = entrada.nextLine();      
        // limpar buffer  
        entrada.nextLine();      
        ContaCorrente conta = new ContaCorrente(titular);  

        return conta;  
    }
}

1 answer

1

   `    do {  
            int i = 0;  
            contas[i] = criarConta();     
            System.out.println("Quer continuar inserindo contas?");  
            resposta = entrada.nextLine();      
            // limpar buffer  
            entrada.nextLine(); 
            i ++ ;  
        } while ((resposta.equals("s")) || (resposta.equals("S")));  
    }  

    private static ContaCorrente criarConta () {  
        String titular;      
        System.out.println("Informe o nome do titular");  
        titular = entrada.nextLine();      
        // limpar buffer  
        entrada.nextLine();      
        ContaCorrente conta = new ContaCorrente(titular);  
        return conta;  
    }
}`

in all cases where you put entrada.nextLine() just put entrada.next()

  • 1

    Your answer would be better if you explained why next() and not nextLine()

Browser other questions tagged

You are not signed in. Login or sign up in order to post.