Boa tarde!
Alguém aqui tem algum link que ensina como fazer um menu de opções em Java?
Por exemplo:
1- Nome
2 - email
4- telefone
5-sair
[]'s
Boa tarde!
Alguém aqui tem algum link que ensina como fazer um menu de opções em Java?
Por exemplo:
1- Nome
2 - email
4- telefone
5-sair
[]'s
pesquisa por menu --PRIME FACES
Swing? Console?
Console.
Alguém?
Se é em console, é só usar o System.out.println para imprimir o menu. Use o método nextLine() do scanner para ler a opção desejada.
Scanner in = new Scanner(System.in);
int opcao = 0;
while (opcao != 5) {
System.out.println("Menu de opções:");
System.out.println("1 - Informar nome");
System.out.println("2 - Informar e-mail");
System.out.println("5 - Sair");
try {
opcao = Integer.parseInt(in.nextLine());
processar(opcao);
} catch (NumberFormatException e) {
System.out.println("Opção inválida!");
opcao = -1;
}
}
Se é em console, é só usar o System.out.println para imprimir o menu. Use o método nextLine() do scanner para ler a opção desejada.
Scanner in = new Scanner(System.in); int opcao; while (opcao != 5) { System.out.println("Menu de opções:"); System.out.println("1 - Informar nome"); System.out.println("2 - Informar e-mail"); System.out.println("5 - Sair"); try { opcao = Integer.parseInt(in.nextLine()); processar(opcao); } catch (NumberFormatException e) { System.out.println("Opção inválida!"); opcao = -1; } }
Vini,
Creio que o uso do while não seja, no entanto, uma boa prática. Eu faria diferente:
Scanner in = new Scanner(System.in);
System.out.print("Escolha uma opção:\n[1] opção 1\n[2] opção 2\n>> ");
int opc = in.nextInt();
switch(opc){
case 1:
//opção 1
break;
case 2:
//opção 2
break;
default:
//opção inválida
break;
}
Ué, e por que usar o while não é uma boa prática?
Sem ele o menu aparece uma única vez.
Uma outra opção equivalente seria usar o do…while, mas não muda muita coisa.
O nextInt() para ler do console que não é uma boa prática. Ele deixa no buffer o \n, e pode comprometer futuras leituras do Scanner.
Para ler do console, o único método que deve ser usado é o nextLine().
O instrutor Narciso da Caelum chegou a comentar que o switch em Java deve ser evitado. Ele não entrou em detalhes, mas parece que é algo em relação a quebra de encapsulamento ou uma prática não tão orientada a objetos.
Alguém sabe me dizer o por que devemos evitar o uso de switch em Java?
Um colega meu, bastante experiente com C, sempre dizia para ter cuidado com o while, para o programa não comer a memória da máquina. Não sei bem se é o caso, pois esse loop dificilmente fecaria infinito (isto é, se ficaria) mas, no entanto, há mesmo necessidade disso? Se o usuário vê as opções, ele não tem porque digitar algo errado. Acho que o mais coerente seria jogar no default (no caso do switch) e abortar o aplicação.
Nossa, disso nunca ouvi falar. O while é uma estrutura de controle, não consome 1 bit sequer de memória.
Que eu me lembre, em assembly, ele é transformado apenas num jump condicional.
Mas vou procurar sobre o assunto.
Coloquei o código no while, pois ele pode querer ler o nome e, depois disso, apresentar o menu novamente para que o usuário escolha outra coisa, como o e-mail. A opção de sair deixa claro que as outras opções não saem do programa, o que indica que o menu será reapresentado.
Mesmo que o usuário digite tudo certo, quando voltar ao menu, se você ainda estiver usando o mesmo Scanner, pode ter erros de leitura de não usar o nextLine(). O próximo nextInt() pode tentar interpretar o \n e ter um comportamente inconsistente. Na prática, métodos como esse só servem para ler arquivos (embora haja opções melhores).
Agora, achei estranho você falar em confiar que o usuário não irá fazer nada errado. No meu mundo, esse tipo de usuário simplesmente não existe. heheheh
O instrutor Narciso da Caelum chegou a comentar que o switch em Java deve ser evitado. Ele não entrou em detalhes, mas parece que é algo em relação a quebra de encapsulamento ou uma prática não tão orientada a objetos.Alguém sabe me dizer o por que devemos evitar o uso de switch em Java?
Normalmente o switch indica a presença de código que pode ser substituído por polimorfismo. Mas esse é um assunto bastante avançado, para um menu em console. hehehehe
Aqui tem um exemplo:
Vou procurar a respeito também. Ele me disse isso, e eu não pesquisei a respeito. Se falei besteira, pela perdão.
E obrigado por esclarecer sobre o nextInt(). Eu não sabia disso.