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.

Responder a