É parece q tem erro nesse if mesmo como você falou estou tentando acessar
uma posição que não existe

quando eu botei ele comentado eu consegui entrar no else do Sair.

//if(checaItem(itensLoja.get(entrada-1).getNome(),"arma")){
// comprarItem(personagem,item(itensLoja.get(entrada-1).getNome()));
//}


Como eu faço para obter o resultado que eu estou querendo entao com aquele
if sem dar esse erro?

Eu quero que ele cheque se existe aquele item. Essa função checaItem retorna
true or false, mas pelo visto quando ele tenta checar essa posição que não
existe da erro. Como posso contornar isso ?

---

e valeu Julio mas ainda não sei como usar essas exceptions ai não, por
enquanto deixa assim mesmo.

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

> Sim, eu falei isso hoje na monitoria.
>
> É que eles ainda não viram exceção, por isso ele colocou assim. Quando
> entender bem a hierarquia delas, não fará mais assim (eu espero).
> Lembrando que Exception deve ser sempre a última a ser tratada, porque é a
> classe mais alta.
>
> []'s
>
>
> 2011/4/29 Júlio Zynger <[email protected]>
>
>> Não sou monitor da matéria e provavelmente não vai te ajudar nesse
>> problema, mas posso dar uma dica? Sempre que fizer um catch, procura usar a
>> Exception que você espera receber no caso de um erro. Existem algumas
>> situações em que mais de uma exception pode aparecer potencialmente. Se você
>> faz catch(Exception e), trata as duas com um mesmo bloco de código, quando
>> na realidade o certo é tratar cada uma de uma forma diferente, dependendo da
>> Exception.
>>
>> Por exemplo:
>>
>>
>>> try{
>>>   trecho de codigo
>>> }catch(NullPointerException npe){
>>>   trata o primeiro tipo
>>> }catch(IndexOutOfBoundsException npe){
>>>   trata o segundo tipo
>>> }
>>> segue o código
>>
>>
>> Fica a dica :)
>>
>> Em 29 de abril de 2011 02:57, Zaedy Sayão <[email protected]> escreveu:
>>
>> 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.
>>>
>>
>>
>>
>> --
>> [image: JulioZynger]Júlio Zynger
>> Site pessoal: http://dcc.ufrj.br/~julioz
>> Twitter: @juliozynger
>>
>>  --
>> 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