Menu Java via console
22/09/2016
0
Estou fazendo um menu simples em java via console (println), para um trabalho da faculdade. Porém encontrei alguns problemas, caso alguém possa me ajudar ficarei agradecido:
1) Meu menu vai ter a seguinte estrutura:
* Vai iniciar pedindo para a pessoa navegar (Do while)
Ola,digite
1 - Cadastros
2 - Relatórios
3 - Sair
Entrando no 1, ele tem que abrir duas opções:
.:.Cadastros.:.
1 - usuarios
2 - produtos
3 - sair
depois de sair, ou concluir os cadastros o menu principal deverá ser acionado automaticamente (terminei de cadastrar os usuarios, deve reabrir o menu de cadastros, posteriormente o menu principal)
Também tenho que controlar as exceções pertinentes (nao digitar letras em campos numericos e nao digitar numeros negativos).
Abaixo meu codigo:
//inicio do Scanner
Scanner leia = new Scanner(System.in);
//Variáveis diversas do sistema
int menu1 = 0;
int usuariosCadastrados = 0;
int produtosCadastrados = 0;
boolean valida;
//Pedir para o usuário definir a quantidade de usuários e Produtos a cadastrar
System.out.print("Digite a quantidade de Usuários do Sistema: ");
usuariosCadastrados = leia.nextInt();
System.out.print("Digite a quantidade de Produtos a serem cadastrados: ");
produtosCadastrados = leia.nextInt();
//Inicio dos vetores e matrizes
String[] nomeUsuario = new String[usuariosCadastrados];
Integer[] produtos = new Integer[produtosCadastrados];
//Inicio do menu
do {
System.out.println("Escolha uma opção a seguir:");
System.out.println("1 - Cadastro de Usuários");
System.out.println("2 - Cadastro de Produtos");
System.out.println("Ou digite 0 para encerrar o programa");
try {
menu1 = Integer.parseInt(leia.nextLine());
} catch (NumberFormatException e) {
System.out.println("Por favor, digite apenas números!");
}
if (menu1 < 0) {
System.out.println("O número deve ser positivo!");
}
if (menu1 == 1){
for (int i = 0; i < usuariosCadastrados; i++) {
System.out.print("Digite o nome do "+(i+1)+"º usuário: (Limite de cadastros: "+usuariosCadastrados+ " users)");
nomeUsuario[i] = leia.nextLine();
}
}
}while (menu1 != 0);
}
Cristiano Costa
Posts
23/09/2016
Cristiano Costa
Quando eu entro no primeiro menu e termino a ação, gostaria que o sistema voltasse para o menu anterior. Porém ele finaliza o programa.
Outra coisa, é que está iniciando caindo na try cath, sem ter digitado nada... creio que é um erro de lógica.
23/09/2016
Moderacao Devmedia
Segue o código do menu que você estava com dúvida.
do { System.out.println("Escolha uma opção a seguir:"); System.out.println("1 - Cadastro de Usuários"); System.out.println("2 - Cadastro de Produtos"); System.out.println("3 - Digite 3 para encerrar o programa"); do { System.out.println("Escolha uma opção a seguir:"); System.out.println("1 - Cadastro de Usuários"); System.out.println("2 - Cadastro de Produtos"); System.out.println("3 - Digite 3 para encerrar o programa"); try { menu1 = Integer.parseInt(leia.nextLine()); } catch (NumberFormatException e) { menu1=0; System.out.println("\\n POR FAVOR, DIGITE APENAS NÚMEROS!!!!!\\n"); } if (menu1 < 0) { System.out.println("\\n O NÚMERO DEVE SER POSITIVO!"); } if (1 == menu1){ // IMPLEMENTAR A OPÇÃO 1 DO MENU System.out.println(" \\n DIGITE 0 PARA VOLTAR AO MENU OU 3 PARA ENCERRAR \\n"); menu1 = Integer.parseInt(leia.nextLine()); } }while (menu1 != 3 && menu1 !=1); }
Espero que tenha ajudado.
Valeu Abraços.
23/09/2016
Moderacao Devmedia
Segue o código do menu que você estava com dúvida.
do { System.out.println("Escolha uma opção a seguir:"); System.out.println("1 - Cadastro de Usuários"); System.out.println("2 - Cadastro de Produtos"); System.out.println("3 - Digite 3 para encerrar o programa"); do { System.out.println("Escolha uma opção a seguir:"); System.out.println("1 - Cadastro de Usuários"); System.out.println("2 - Cadastro de Produtos"); System.out.println("3 - Digite 3 para encerrar o programa"); try { menu1 = Integer.parseInt(leia.nextLine()); } catch (NumberFormatException e) { menu1=0; System.out.println("\\\\n POR FAVOR, DIGITE APENAS NÚMEROS!!!!!\\\\n"); } if (menu1 < 0) { System.out.println("\\\\n O NÚMERO DEVE SER POSITIVO!"); } if (1 == menu1){ // IMPLEMENTAR A OPÇÃO 1 DO MENU System.out.println(" \\\\n DIGITE 0 PARA VOLTAR AO MENU OU 3 PARA ENCERRAR \\\\n"); menu1 = Integer.parseInt(leia.nextLine()); } }while (menu1 != 3 && menu1 !=1); }
Espero que tenha ajudado.
Valeu Abraços.
24/09/2016
Cristiano Costa
Muito obrigado pela ajuda, porém ainda estou com algumas duvidas:
Assistindo algumas aulas, fui aconselhado a colocar a variavel que vai verificar o menu (que chamei de menu1) como uma string por causa da implementação do Scanner (Sinceramente nao entedi o por que, mas da erro se nao fizer isso).
Dessa maneira quando meu codigo entra no:
try {
menu1 = Integer.parseInt(leia.nextLine());
} catch (NumberFormatException e) {
menu1=0;
System.out.println("\\\\n POR FAVOR, DIGITE APENAS NÚMEROS!!!!!\\\\n");
}
ele da um erro no recebimento =0 do menu1 (pq é =0, sendo que está verificando se a pessoa digitou letras?)
vou postar a seguir o meu codigo mais implementado para você ver:
24/09/2016
Cristiano Costa
public class teste { public static void main(String[] args) { // TODO Auto-generated method stub // Dados para fins de relatório String nomeEmpresa = "MC Soluções LTDA"; String tipoAtividade = "Serviços de TI em geral"; int cnpjEmpresa = 123456789; String enderecoEmpresa = "Rua coisa e tal, 123, Savassi, Belo Horizonte / MG"; String nomeSocio1 = "Cristiano Soares da Costa"; String nomeSocio2 = "Marcelo"; // inicio do Scanner Scanner leia = new Scanner(System.in); // Variáveis diversas do sistema String menu1 = null; int usuariosCadastrados = 0; int produtosCadastrados = 0; int codigoProduto = 0; boolean valida; String texto; // Pedir para o usuário definir a quantidade de usuários e Produtos a // cadastrar System.out.print("Digite a quantidade de Usuários do Sistema: "); usuariosCadastrados = leia.nextInt(); System.out.print("Digite a quantidade de Produtos a serem cadastrados: "); produtosCadastrados = leia.nextInt(); // Inicio dos vetores e matrizes String[] nomeUsuario = new String[usuariosCadastrados]; Integer[] produtos = new Integer[produtosCadastrados]; // Inicio do menu do { System.out.println("Escolha uma opção a seguir:"); System.out.println("1 - Cadastro de Usuários"); System.out.println("2 - Cadastro de Produtos"); System.out.println("Ou digite 0 para encerrar o programa"); try { menu1 = leia.nextLine().toString(); } catch (NumberFormatException e) { menu1 = 0; System.out.println("\\\\n POR FAVOR, DIGITE APENAS NÚMEROS!!!!!\\\\n"); } if (Integer.parseInt(menu1) < 0) { System.out.println("\\\\n O NÚMERO DEVE SER POSITIVO!"); } if (1 == Integer.parseInt(menu1)){ switch (Integer.parseInt(menu1)) { case 1: for (int i = 0; i < usuariosCadastrados; i++) { System.out.print("Digite o nome do " + (i + 1) + "º usuário: (Limite de cadastros: " + usuariosCadastrados + " users)"); nomeUsuario[i] = leia.nextLine(); } break; case 2: for (int i = 0; i < produtosCadastrados; i++) { System.out.print("Digite a Descrição do " + (i + 1) + "º produto: (Limite de cadastros: " + produtosCadastrados + " produtos.)"); produtos[i] = leia.nextInt(); codigoProduto = i + 1; System.out.print("O código do produto cadastrado é: " + codigoProduto); } break; default: System.out.print("Favor digitar apenas numeros válidos!"); } } } while (Integer.parseInt(menu1) != 0); } }
Clique aqui para fazer login e interagir na Comunidade :)