Usei sua solução por ser mais correta ehhehe

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

> Sei lá....rsrs
>
> Uma solução rápida é você testar se o índice passado é <= que o tamanho do
> array.
>
> Exemplo:
>
> Tamanho 2 - entrada 3
> Nesse caso, você não tenta acessar porque a posição não existe....
>
> Mas algo me diz que você está fazendo seu programa de maneira errada, meio
> confuso, mas às 3:20 da manhã é meio difícil criticar....hehe
>
> BTW, baixa a aula de debug. Melhor coisa que você faz por agora. Teria
> achado o erro de maneira bem mais rápida.
>
> []'s
>
> 2011/4/29 Fellipe Sombra <[email protected]>
>
>> É 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.
>>
>
>
>
> --
> 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