Menu Java via console
Bom dia Turma do Devmedia.
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);
}
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
Curtidas 0
Respostas
Moderacao Devmedia
22/09/2016
Olá Cristiano
Qual é a sua dúvida?
Qual é a sua dúvida?
GOSTEI 0
Cristiano Costa
22/09/2016
Não estou conseguindo navegar entre os menus...
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.
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.
GOSTEI 0
Moderacao Devmedia
22/09/2016
Olá, Cristiano beleza?
Segue o código do menu que você estava com dúvida.
Espero que tenha ajudado.
Valeu Abraços.
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.
GOSTEI 0
Moderacao Devmedia
22/09/2016
Olá, Cristiano beleza?
Segue o código do menu que você estava com dúvida.
Espero que tenha ajudado.
Valeu Abraços.
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.
GOSTEI 0
Cristiano Costa
22/09/2016
Bom dia Jefferson,
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:
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:
GOSTEI 0
Cristiano Costa
22/09/2016
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); } }
GOSTEI 0