Erro na ordem de execucao [Resolvido]

11 respostas
M

daew galera… estou no comeco do curso d sis e estamos no java basico ainda. eu tenho q entregar hj um trabalho e n consigo faser o programa executar na sequencia que a professora pedio.
sequencia: o O programa principal deve conter somente o menu de opções e as chamadas aos métodos.
o Ao escolher a opção 1 ? Cadastro, o programa deve permitir que o usuário cadastre os dados várias vezes (utilizar estrutura de repetição).
o Ao escolher a opção 2 ? Listagem, o programa deverá mostrar os dados ordenados por um dos dados (vetor), a critério do programador (criar um método para ordenar os dados e outro para mostrar a listagem com os dados).
o Ao escolher a opção 3 ? Pesquisa, o programa pede para informar o que deseja consultar e mostra as outras informações (por exemplo, digita o nome e o prorama mostra o telefone) ou mostra uma mensagem: ?não cadastrado?, caso não encontre o que foi solicitado na pesquisa.
e o 4- sair do sistema

lembrando que materia so deve cair matriz, vetor, case… enfim o basico

meu programa esta assim:

import javax.swing.*; class pd2mari { public static void main(String [] args) { String[] produto=new String[100]; int [] codigo=new int[100]; int [] quant=new int[100]; int tam=cadastro(produto,codigo,quant); int option; do{ option=Integer.parseInt(JOptionPane.showInputDialog(("1-Cadastro de produtos.\n2-Listagem dos produtos.\n3-Pesquisa de produtos.\n4-Sair"))); switch(option) { case 1 : cadastro (produto,codigo,quant); break; case 2 : listagem (produto,codigo,quant,tam); break; case 3 : pesquisa (produto,codigo,quant,tam); break; } }while (option ==4); System.exit(0); } public static int cadastro (String [] produto, int[] codigo, int [] quant) { int i=0; do{ produto[i]=JOptionPane.showInputDialog("Digite o nome do produto: "); if (produto[i].equals(""))break; codigo[i]=Integer.parseInt(JOptionPane.showInputDialog("O codigo deste produto: ")); quant[i]=Integer.parseInt(JOptionPane.showInputDialog("Quantidade em estoque: ")); i++; }while (quant[i-1] !=0); return (i); } public static void listagem (String[]produto,int[]codigo,int[]quant,int tam){ JTextArea lista=new JTextArea(); int i; for(i=0;i<tam;i++){ lista.append (codigo[i]+" - "+produto[i]+" - "+quant+"\n"); } JOptionPane.showMessageDialog(null,lista); } public static void pesquisa (String[]produto,int[]codigo,int[]quant,int tam){ int busca; do{ busca=Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja pesquisar: ")); if(busca==0)break; int i; for(i=0;i<tam;i++){ if (busca==codigo[i]) { if(quant[i]==0) { JOptionPane.showMessageDialog(null,"produto: "+ produto[i]+"\nNão disponível!"); break; } else { JOptionPane.showMessageDialog(null,"produto: "+ produto[i]+"\nQuantidade em Estoque: "+quant[i]); break; } } } if (i==tam) JOptionPane.showMessageDialog(null,"Produto não cadastrado"); }while(busca!=0); } }

11 Respostas

CrOnNoS

não sei se entendi direito seu problema mas parece ser aqui:
while (option ==4)

esse while do seu “do while”
você está mandado executar as suas opções enquando o option for == 4, ou seja, qualquer comando diferente de 4 ele sai da estrutura e sai do programa.
Acho que sua intenção aqui era colocar “while(option != 4)” onde o bloco do while seria executado enquanto o usuário não digita-se a opção de sair, 4

M

vlu cara, arrumei esta part,
mas agora tem a part q a janela do menu que era pra aparecer ants do cadastro do produto.

CrOnNoS

a causa disso é essa linha:
int tam=cadastro(produto,codigo,quant);
só dar um jeito de tirar ela

M

uhumm arrumei deu certo fikou assim:
agora executa primeiro o menu, cadastro com quantidade=1 e eles me da a resposta sempre com 1 a menos,
tem a part da pesquisa q qnd n kero mais pesquisar ele sai do programa ao invez de voltar ao menu.

public static void main(String [] args) { String[] produto=new String[100]; int [] codigo=new int[100]; int [] quant=new int[100]; int tam=0; int option; do{ option=Integer.parseInt(JOptionPane.showInputDialog(("1-Cadastro de produtos.\n2-Listagem dos produtos.\n3-Pesquisa de produtos.\n4-Sair"))); switch(option) { case 1 : tam=cadastro (produto,codigo,quant,tam); break; case 2 : listagem (produto,codigo,quant,tam); break; case 3 : pesquisa (produto,codigo,quant,tam); break; } }while (option !=4); System.exit(0); }

M

desculpem o flood, mas a part q a pesquisa n retorna ja axei o erro, mas ainda resta saber pq a quantidade pesquisada esta dando -1

CrOnNoS

Não achei seus problemas, coloquei o código aqui pra testa e continuo não achando hehe
Só percebi um outro problema aqui em listagem:

lista.append (codigo[i]+" - “+produto[i]+” - “+quant+”\n");

onde faltou o [i] em quant

O que exatamente é esse erro de “-1” ?

M

vlu por ter axado o erro da lista, eu tbm estava procurando.

no caso o cadastro:
cadastro 1
nome arroz
quantidade 1
e depois da erro na pesquisa:
codigo do produto que deseja pesquisar: 1

message dialog arroz estoque 0 em vez de 1

o erro deve estar aki dentro:

public static void pesquisa (String[]produto,int[]codigo,int[]quant,int tam){ int busca; do{ busca=Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja pesquisar: ")); if(busca==0)break; int i; for(i=0;i<tam;){ if (busca==codigo[i]) { JOptionPane.showMessageDialog(null,"produto: "+ produto[i]+"\nNão disponível!"); break; } else { JOptionPane.showMessageDialog(null,"produto: "+ produto[i]+"\nQuantidade em Estoque: "+quant[i]); break; } } if (i==tam) JOptionPane.showMessageDialog(null,"Produto não cadastrado"); }while(busca!=0); } }

CrOnNoS

é … tem como falar comando por comando para chegar no erro ?
tentei cadastrar o arroz com código e quantidade 1, depois listar (listou certo) e pesquisar, e a pesquisa retornou tudo corretamente … código 1 retornou arroz com quantidade 1

M

minha lista tbm esta certa, mas o problema esta ali na procura q n sei da ond q ele esta diminuindo 1

M

axei o problema ;D:D:D:D

if (busca!=codigo[i])

eu estava colokando esta linha ==0 e tem q ser !=0

vlu ai pela ajuda…
agora agora eu tiro 10zao
t+

CrOnNoS

Pois é … aqui parece certo.
Passa seu código completo de novo.
Edit: solved …
aproveitando então:
Lembre de colocar [RESOLVIDO] no título do tópico editando a primeira mensagem

Criado 30 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 11
Participantes 2