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.
