Java - academic system

Asked

Viewed 553 times

0

I have the program below in java. However, when I run option 1 or 2, it appears directly Name and Age. Should pull the name and only after I enter the name appear age. Someone knows me if any 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);
    }
}

Program running:

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: 

1 answer

3


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

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

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

scan.nextLine(); //limpar o '\n' anterior

Browser other questions tagged

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