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.
