Na verdade ela é a menos errada...rsrs

Mas a essa hora, sem condições de sugerir uma melhor.

[]'s

2011/4/29 Fellipe Sombra <[email protected]>

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



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