apareceu isso: Temos as seguintes armas: 1 - Espada Enferrujada(x5) - 50 dolares 2 - Espada de Metal(x3) - 150 dolares 3 - Sair Seu dinheiro: 150 dolares 3 java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 Comando Inválido catch inArmas. Temos as seguintes armas: at java.util.ArrayList.RangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at loja2.Loja.comprarArma(Loja.java:81) at loja2.Loja.comprar(Loja.java:61) at loja2.Loja.loja(Loja.java:36) at loja2.Main.main(Main.java:52) 1 - Espada Enferrujada(x5) - 50 dolares 2 - Espada de Metal(x3) - 150 dolares 3 - Sair Seu dinheiro: 150 dolares
2011/4/29 Zaedy Sayão <[email protected]> > Nem li tudo, mas primeira pergunta é, você já debugou? > > Dentro do catch dá um e.printStackTrace e manda o que aparecer. > > []'s > > 2011/4/29 Fellipe Sombra <[email protected]> > >> Bom, eu já estava usando o try/catch em algumas ocasiões para verificar se >> a entrada era um inteiro e não uma string. >> >> Mas agora que estou "melhorando" minha loja, botando para todas as opções >> serem acessadas por números e não strings eu me deparei com 2 situações que >> eu não estou entendendo porque está entrando no catch. >> >> Nessas 2 funções( comprarArma() e vender() ): >> >> public void comprarArma(Personagem personagem){ >> boolean inArmas = true; >> int entrada; >> while(inArmas){ >> System.out.println("Temos as seguintes armas:"); >> mostraArmas(); >> System.out.println("Seu dinheiro: "+personagem.getDinheiro()+" dolares"); >> try{ >> entrada = scanner.nextInt(); >> if(checaItem(itensLoja.get(entrada-1).getNome(),"arma")){ >> comprarItem(personagem,item(itensLoja.get(entrada-1).getNome())); >> } >> else if(entrada == (itensLoja.size()+1)){ >> inArmas = false; >> } >> else{ >> System.out.println("Comando Inválido else inArmas"); >> } >> }catch (Exception e) { >> System.out.println("Comando Inválido catch inArmas."); >> } >> } >> } >> public void vender(Personagem personagem){ >> boolean inVender = true; >> int entrada; >> while(inVender){ >> System.out.println("O que você deseja vender?"); >> mochilaVenda(personagem); >> System.out.println("Seu dinheiro: "+personagem.getDinheiro()+" >> dolares"); >> try{ >> entrada = scanner.nextInt(); >> if(checaItemVenda(personagem.itensP.get(entrada-1).getNome(),personagem)){ >> >> venderItem(personagem,item(personagem.itensP.get(entrada-1).getNome()),item(itensLoja.get(entrada-1).getNome())); >> } >> else if(entrada == (mostrouImochila+1)){ >> inVender = false; >> } >> else{ >> System.out.println("Comando Inválido else inVender"); >> } >> }catch(Exception e){ >> System.out.println("Comando Inválido catch inVender"); >> } >> } >> } >> >> Vou dar situações como exemplo para vocês entenderem o que acontece: >> >> situação exemplo comprarArmas(): >> >> Temos as seguintes armas: >> 1 - Espada Enferrujada(x6) - 50 dolares >> 2 - Espada de Metal(x3) - 150 dolares >> 3 - Sair >> Seu dinheiro: 200 dolares >> 1 >> Digite a quantidade de Espada Enferrujada que você deseja >> 2 >> Você comprou 2 Espada Enferrujada e gastou 100 dolares >> Temos as seguintes armas: >> 1 - Espada Enferrujada(x4) - 50 dolares >> 2 - Espada de Metal(x3) - 150 dolares >> 3 - Sair >> Seu dinheiro: 100 dolares >> 3 >> Comando Inválido catch inArmas. >> Temos as seguintes armas: >> 1 - Espada Enferrujada(x4) - 50 dolares >> 2 - Espada de Metal(x3) - 150 dolares >> 3 - Sair >> Seu dinheiro: 100 dolares >> >> Quando digito o valor correspondente a uma opção que seja um item ele >> funciona, porém quando digito a opção correspondente ao Sair ele entra no >> catch... assim como qualquer outro número que não seja a opção de um númore. >> Por exmeplo 4,5,6... qualquer um desses entram no catch, quando deveriam >> entrar no 'else'. >> >> Eu ja até tentei botar : >> >> else if(entrada == (3){ >> inArmas = false; >> } >> >> Só para testar se assim funcionava, mas mesmo assim entrou no catch quando >> eu digitei 3. >> >> No vender() Acontece a mesma situação , não consigo acessar o Sair também. >> >> Não sei o que estou fazendo de errado. Se alguém puder ajudar fico grato. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Comp 2 - Geral" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/comp2-geral?hl=en. >> > > > > -- > Zaedy Dantas Sayão > Graduando em Ciência da Computação DCC/UFRJ > http://www.manufato.com.br/ > MSN: [email protected] > > -- > You received this message because you are subscribed to the Google Groups > "Comp 2 - Geral" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/comp2-geral?hl=en. > -- Fellipe Sombra Assessor de Projetos EJCM – Empresa Júnior de Consultoria e Desenvolvimento Web Departamento de Ciência da Computação – UFRJ www.ejcm.com.br - (21) 2598-9440 -- You received this message because you are subscribed to the Google Groups "Comp 2 - Geral" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/comp2-geral?hl=en.
