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.

Responder a