Coloca sua main ai também. Mas eu mostrei essa exceção hoje na monitoria. O seu array tem tamanho 2. Você está tentando acessar alguma posição que não tem o que deveria e/ou não existe.
Quando você está digitando 3 ou mais, o seu programa deve estar pegando esse número e tentando acessar a posição 3 que não existe. Se entrada vale 3, quando passar pela linha abaixo, vai tentar pegar a posição 2 que não existe. Estou supondo, porque não tenho como debugar. Use o debug que você acha rápido o erro. itensLoja.get(entrada-1) []'s 2011/4/29 Fellipe Sombra <[email protected]> > 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. > -- 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.
