Fórum Menu Java via console #562737
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
Curtir tópico
+ 0Posts
23/09/2016
Moderacao Devmedia
Qual é a sua dúvida?
Gostei + 0
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.
Gostei + 0
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.
Gostei + 0
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.
Gostei + 0
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:
Gostei + 0
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);
}
}
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)