Java - academic system [duplicate]

0

I have the program below in java. However, when I execute option 1 or 2, Direct appears Name and Age. Should pull the name and only after I type the name appear age. Can anyone tell me if some code is missing?

package SistemaAcademico;
import java.util.Scanner;

public class Principal {

    public static void main (String[] args){

        Scanner scan = new Scanner(System.in);

        int op = 0;

        do{
            System.out.println("##ESCOLHA UMA OPÇÃO##\n");
            System.out.println("1 - Cadastrar Aluno");
            System.out.println("2 - Cadastrar Professor");
            System.out.println("3 - Sair\n");
            System.out.println("Digite uma opção: ");
            op = scan.nextInt();

            switch(op){
                case 1:
                    System.out.println("Bem vindo ao sistema de cadastro de Alunos\n");

                    System.out.println("Nome: ");
                    String nome = scan.nextLine(); // não fica opção para digitar o nome já aparece a opção de idade.

                    System.out.println("Idade: ");
                    int idade = scan.nextInt();
                    scan.nextLine();

                    System.out.println("Genero ('F' para Feminino e 'M' para Masculino): ");
                    char genero = scan.next().charAt(0);
                    scan.nextLine();

                    System.out.println("Telefone: ");
                    String telefone = scan.nextLine();

                    System.out.println("Endereço: ");
                    String endereco = scan.nextLine();

                    System.out.println("CPF: ");
                    String cpf = scan.nextLine();

                    System.out.println("RG: ");
                    String rg = scan.nextLine();

                    System.out.println("Bairro: ");
                    String bairro = scan.nextLine();

                    System.out.println("Cidade: ");
                    String cidade = scan.nextLine();

                    System.out.println("UF: ");
                    String uf = scan.nextLine();

                    System.out.println("RA: ");
                    String ra = scan.nextLine();

                    System.out.println("Curso: ");
                    String curso = scan.nextLine();
                    Aluno aluno = new Aluno(nome, idade, genero, telefone, endereco, cpf, rg, bairro, cidade, uf, ra, curso);
                    break;

                case 2:
                    System.out.println("Bem vindo ao sistema de cadastro de Professores");

                    System.out.println("Nome: ");
                    nome = scan.nextLine(); // não fica opção para digitar o nome já aparece a opção de idade.

                    System.out.println("Idade: ");
                    idade = scan.nextInt();

                    System.out.println("Genero ('F' para Feminino e 'M' para Masculino): ");
                    genero = scan.next().charAt(0);
                    scan.nextLine();

                    System.out.println("Telefone: ");
                    telefone = scan.nextLine();

                    System.out.println("Endereço: ");
                    endereco = scan.nextLine();

                    System.out.println("CPF: ");
                    cpf = scan.nextLine();

                    System.out.println("RG: ");
                    rg = scan.nextLine();

                    System.out.println("Bairro: ");
                    bairro = scan.nextLine();

                    System.out.println("Cidade: ");
                    cidade = scan.nextLine();

                    System.out.println("UF: ");
                    uf = scan.nextLine();

                    System.out.println("RP: ");
                    String rp = scan.nextLine();

                    System.out.println("Disciplina Ministrada: ");
                    String disciplinaMinistrada = scan.nextLine();

                    System.out.println("Salário: ");
                    double salario = scan.nextDouble();
                    Professor professor = new Professor(nome, idade, genero, telefone, endereco, cpf, rg, bairro, cidade, uf, rp, disciplinaMinistrada, salario);
                    break;

                case 3:
                    break;

                default:
                    System.out.println("Opção invalida! Tente novamente.");
            }
        }while(op != 3);
    }
}

Running program:

run:
##ESCOLHA UMA OPÇÃO##

1 - Cadastrar Aluno
2 - Cadastrar Professor
3 - Sair

Digite uma opção: 
1
Bem vindo ao sistema de cadastro de Alunos

Nome: 
Idade: 
    
asked by anonymous 23.08.2016 / 00:58

1 answer

3

Normal. The problem is that nextInt (), used in the selection of the option, only consumes the integer and not the newline (\ n). The next next line ends up consuming this newline .

A functional "gambiarra" would be to add another nextLine () to consume this surplus character

System.out.println("Digite uma opção: ");
op = scan.nextInt();

scan.nextLine(); //limpar o '\n' anterior
    
23.08.2016 / 01:19