Switch está pulando código!

switch(operacao) {
case 1:
System.out.print(“Informe seu nome: \n”);
usuario.setNome(entrada.nextLine());
System.out.print(“Informe seu sobrenome: \n”);
usuario.setSobrenome(entrada.nextLine());
System.out.print(“Informe seu email: \n”);
usuario.setEmail(entrada.nextLine());
System.out.print(“Informe sua senha: \n”);
usuario.setSenha(entrada.nextLine());
System.out.print(“Informe sua data de nascimento: \n”);
usuario.setData(entrada.nextLine());
System.out.print(“Informe sua idade: \n”);
usuario.setIdade(entrada.nextInt());

            FileWriter arq = new FileWriter("c:\\Nomes.txt");
            PrintWriter gravarArq = new PrintWriter(arq);
            
            gravarArq.printf("+--Resultado--+%n");
            
            gravarArq.printf("** Nome: %s **%n", usuario.getNome());
            gravarArq.printf("** Sobrenome: %s **%n", usuario.getSobrenome());
            gravarArq.printf("** Email: %s **%n", usuario.getEmail());
            gravarArq.printf("** Data Nascimento: %s **%n", usuario.getData());
            gravarArq.printf("** Idade: %d **%n", usuario.getIdade());
            gravarArq.printf("** Senha: %s **%n", usuario.getSenha());
            gravarArq.printf("+-------------+%n");
            
            
            arq.close();
            usuario.setSenha("****PROTEGIDO****");
            System.out.printf("\nO nome %s, sobrenome %s, senha %s , data %s, email %s e idade %d foram gravados com sucesso em"
                    + " \"c:\\Nomes.txt\".\n", usuario.getNome(), usuario.getSobrenome(), usuario.getSenha(), usuario.getData(), usuario.getEmail(), usuario.getIdade());
            break;

}

Quando eu executo, ele não me deixa escrever o nome, pula direto pro sobrenome.

Para ler do teclado usa somente nextLine que evitas esses problemas.

Para escolher a operação clicaste em 1 e enter. O nextInt leu o “1” e o enter ficou “pendente”, depois o nextLine do nome leu o enter e pulou para o sobrenome.

Entendi. Vlw cara! Mas ele não deveria ler linha por linha? Por que está puxando primeiro o nextInt() é o ultimo valor que eu pedi?

E como vou ler um inteiro com nextLine?
Troco a idade pra String, então?

não mudou nada. :stuck_out_tongue:

Olha la em cima na operação um nextInt ainda. Se vires a explicação, eu falei da leitura da operação e depois do nome :slight_smile:

E não precisas de mudar nada para String

operacao = Integer.parseInt(entrada.nextLine());
...
idade = Integer.parseInt(entrada.nextLine());

Entendi agora. Deu certinho. Vlw cara!