Entendi. Então é estranho. Porque o if funciona.. que é a partir desse if
que ele valida para comprar o item a quantidade e essas coisas. E nesse if
ele entra e faz tudo certinho.

if(checaItem(itensLoja.get(entrada-1).getNome(),"arma")){
comprarItem(personagem,item(itensLoja.get(entrada-1).getNome()));
}
else if(entrada == (itensLoja.size()+1)){
inArmas = false;
}
e logo abaixo dele q vem o else do Sair, que aparentemente tem tudo para
funcionar também. Até ja dei system.out no (itensLoja.size()+1) para ver ql
valor q tava resultando isso e imprimiu 3.

2011/4/29 Zaedy Sayão <[email protected]>

> Agora que li tudo (ainda não sei o motivo do erro), vou aproveitar pra
> falar uma coisa que vi que entendeu errado.
>
> Quando um código dá uma exceção (lança, como dizemos), ele vai pro catch
> imediatamente. Então, se a linha 20 lança uma exceção, a linha 21 não vai
> ser executada.
>
> O resto a ser executado será o código depois do catch.
>
> Isso responde porque não está entrando no else, agora o motivo do erro
> ainda não sei.
>
> []'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.
>

-- 
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