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.
