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.

Responder a