Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
E ae galera! Seguinte, eu quero ler o código através do teclado e saber se esse código que foi digitado eh número ou não. Contudo, quando eu tento imprimir o código convertido em matriz no console o Eclipse me chinga com o erro java.lang.ArrayIndexOutOfBoundsException e eu não entendo pq... jah pesquisei uma ca**lhada de sites e os exemplos que vih conferem com a minha lógica, eu acho.
Então para deixar claro: quero imprimir o codigo que converti em Array com println e verificar se esse ca**te eh numérico.
Sou newba! vlw! _________________Goth Girls Ruls!!!
E ae galera! Seguinte, eu quero ler o código através do teclado e saber se esse código que foi digitado eh número ou não. Contudo, quando eu tento imprimir o código convertido em matriz no console o Eclipse me chinga com o erro java.lang.ArrayIndexOutOfBoundsException e eu não entendo pq... jah pesquisei uma ca**lhada de sites e os exemplos que vih conferem com a minha lógica, eu acho.
Então para deixar claro: quero imprimir o codigo que converti em Array com println e verificar se esse ca**te eh numérico.
Sou newba! vlw!
1 - não é bem o eclipse que está lançando a Exception, é a máquina virtual (não importa muito, só para saber...)
2 - 'c' não é o índice, é a própria letra:
3 - índices válidos: 0 até length-1, e não até length
4 - a lógica também está com uma falha:
mostra a mensagem para cada carácter que não for um dígito,
mas faz o parseInt dentro do while de qualquer forma - vai lançar uma Exception _________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
Ae Simu vlw pela ajuda. Vou fazer as alterações que vc disse.
Soh não entendi muito bem o lance do while.... como eu quero que o código seja numérico apenas nao teria que converter o código pra Int? Pelo menos eu achei que teria, ou o proprio if tah se encarregando disso? E porque percorrer a matriz ateh length - 1? não capisco.....
Vou mexer aqui pra ver o resultado.
Mais uma vez obrigado! _________________Goth Girls Ruls!!!
Ae Simu, soh para atualizar, entendi o lance do exception na expressão do while, soh não entendi o pq, o erro não ajudou muito: Integer.parseInt(unknown Source). _________________Goth Girls Ruls!!!
Ae Simu, eu de novo =P, viu, acho que dominei a parada aqui.
Fiz as alterações como vc recomendou, a lógica ficou de boa, soh estava tendo problemas no while que me retornava uma exception, pois como eu estava recebendo um código através do teclado que poderia ser uma string alfanumérica, o while tentava transformar o campo codigo que eh String em Integer, o que eh impossível.
Então eu fiz o seguinte, adicionei um campo boolean d e setei para false, desse modo, quando verifico se os caracteres do array são dígitos, esse campo boolean soh eh verdadeiro quando cai no else, constatando que os elementos do array são todos dígitos, e o while repetirá ateh que o boolean seja verdadeiro.
Segue o código:
Mais uma vez quero agradecer sua ajuda. Obrigado! _________________Goth Girls Ruls!!!
To de volta. Tah tudo certo, tudo blz, mas tem um negócio que me indaga, sabem esse meu método aí? Pois eh, acontece que eu quero exibir o resultado dele (deles na verdade), porém quando eu dou um println na api onde eu instancio o obj a entrada através do Scanner ocorre novamente, u seja, ele pede para eu digitar o código novamente.
Aí vocês me responderiam "você está chamando o método de novo animal! o que você queria!?"
Na minha infinita ignorância o que deveria ocorrer eh, uma vez que eu, no fim do método, mandei retornar o código, era ele que deveria aparecer no println.
Então eh o seguinte, eu tenho esse método ali em cima, certo? Na aplicação eu quero exibir somente o valor do campo codigo desse método. Como fazer?
O que eu fiz e não deu certo (óbvio) foi o seguinte:
Mas o Scanner ocorre duas vezes (jah sei... sou um animal).
O que eu pretendia era deixar encapsulado essa rotina de pedir o código na classe do objeto, sacam? Aí na aplicação eu soh acesso o valor do campo codigo e vualah! Mas não tah rolando.... eu sei que poderia colocar o esquema de pedir o código com o Scanner na aplicação.
*Editando*
Me lembrei que dah pra definir os campos na classe como públicos, aí na aplicação eu dou um System.out.println("Código:" + gp.codigo") e fica tudo certo.
Mas assim eu não quero!
*Fim Editando*
Tem como deixar o esquema de pedir o código na classe e soh acessar o campo codigo depois dentro da aplicação? _________________Goth Girls Ruls!!!
To de volta. Tah tudo certo, tudo blz, mas tem um negócio que me indaga, sabem esse meu método aí? Pois eh, acontece que eu quero exibir o resultado dele (deles na verdade), porém quando eu dou um println na api onde eu instancio o obj a entrada através do Scanner ocorre novamente, u seja, ele pede para eu digitar o código novamente.
Aí vocês me responderiam "você está chamando o método de novo animal! o que você queria!?"
Na minha infinita ignorância o que deveria ocorrer eh, uma vez que eu, no fim do método, mandei retornar o código, era ele que deveria aparecer no println.
Então eh o seguinte, eu tenho esse método ali em cima, certo? Na aplicação eu quero exibir somente o valor do campo codigo desse método. Como fazer?
O que eu fiz e não deu certo (óbvio) foi o seguinte:
Mas o Scanner ocorre duas vezes (jah sei... sou um animal).
O que eu pretendia era deixar encapsulado essa rotina de pedir o código na classe do objeto, sacam? Aí na aplicação eu soh acesso o valor do campo codigo e vualah! Mas não tah rolando.... eu sei que poderia colocar o esquema de pedir o código com o Scanner na aplicação.
*Editando*
Me lembrei que dah pra definir os campos na classe como públicos, aí na aplicação eu dou um System.out.println("Código:" + gp.codigo") e fica tudo certo.
Mas assim eu não quero!
*Fim Editando*
Tem como deixar o esquema de pedir o código na classe e soh acessar o campo codigo depois dentro da aplicação?
Tem razão, eu iria dizer exatamente isso: está chamando o getCodigo duas vezes...
Comentando o seu código:
o mais fácil seria algo como:
e um sermão, risca, quero dizer dicas:
- o nome do método "getCodigo" é um pouco perigoso. Normalmente, por convenção, os métodos "get..." somente devolvem um valor. Melhor seria algo com "lerCodigo". Claro, é seu programa, você faz como quiser... mas acaba confundindo a maioria dos programadores.
- seria melhor o método "lerCodigo" retornar um int, já que o intuito é ler um número.
- 'd' também é um nome pouco eficiênte, melhor escolher algo que descreve o conteúdo um pouco melhor, tipo "entradaValida" ou apenas "valido".
- a lógica ainda tem um bugzinho: se o usuário entrar alguns dígitos seguidos por um não-dígito - 'd' vai ser setada como true apesar da entrada inválida (por favor confirmar, não testei)
Entendeu o porque do for somente ir até 'length-1' ? _________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
E ae Simu, como vai?
Fiz os reparos no código aqui como você gentilmente recomendou, vamos a eles:
° O nome do método foi alterado para "recCodigo()" (melhor que antes vai...).
° O campo boolean foi alterado para "digitok".
° Realmente, quando seguido de dígitos não numéricos, o código eh aceito e a mensagem para serem digitados somente números eh exibida, mas a execução do código continua mesmo assim.
Quanto a chamada duplicada do método na api foi resolvida com a sua ajuda (aprendi mais essa =D).
Por enquanto as coisas estão dessa maneira:
Na api faço a chamada como vc recomendou e consigo exibir o valor do campo codigo sem problemas:
Já o lance do for, já que você me perguntou, eu ainda não entendi não cara... se eu tenho uma matriz eu não tenho que percorre-la ateh o último elemento? Por que ateh length -1? O contador não deveria ir da primeira posição 0 ateh o fim?
Vou ver se consigo dar um jeito aqui na verificação do codigo, pra ver se os caracteres são dígitos, convertendo pra int no final, sei lah.
Valeu pela força aí Simu!
Sou meio lerdo pra aprender essa parada... _________________Goth Girls Ruls!!!
E ae Simu, como vai?
[...]
Já o lance do for, já que você me perguntou, eu ainda não entendi não cara... se eu tenho uma matriz eu não tenho que percorre-la ateh o último elemento? Por que ateh length -1? O contador não deveria ir da primeira posição 0 ateh o fim?
Vou ver se consigo dar um jeito aqui na verificação do codigo, pra ver se os caracteres são dígitos, convertendo pra int no final, sei lah.
Valeu pela força aí Simu!
Sou meio lerdo pra aprender essa parada...
pura matemática: como o primeiro índice é zero e não um, o último índice é o número de elementos menos 1.
Exemplos:
- um array com apenas um elemento
length: 1 elemento: array[0]
índices válidos: 0 (de zero até length-1)
- com dois elementos
length: 2 elementos: array[0] e array[1]
índices: 0 e 1 ( zero até length-1)
- com três elementos
length: 3 elementos: array[0], array[1] e array[2] (três elementos)
índices: 0, 1 e 2 ( zero até length-1)
_________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
Fala galerinha!
Eu destrunxei o código aqui e consegui fazer com que eu pudesse obter a leitura do código como um inteiro, contudo, se um indivíduo maléfico ou desinformado inserir conteúdo alfanumérico no console *pruh* não consigo fazer a leitura com nextInt(), portanto eu teria que fazer a leitura como String mesmo, também poderia usar um try() catch(), mas agora o eclipse me deixou em**tecido e quero conseguir fazer dessa maneira pré-histórica mesmo.
Vou postar o código aqui soh para vcs entenderem o que eu escrevi.
A propósito, estou tentando fazer com que a inserção do código seja repetida caso o maléfico digite um número negativo ou um valor alfanumérico, porém, contudo, entretanto, testando da maneira como está aí, no momento em que o código eh lido da matriz no for, quando eh encontrado uma letra por exemplo ele exibe a mensagem "Digite somente números", mas continua a execução do resto do prog. Não sei se eh por causa da porcaria do break, mas se eu tiro o break daí essa mensagem eh repetida por toda a eternidade.
Alguém me dá a luz? (não literalmente, acho que nascer uma única vez jah eh castigo suficiente).
Hoje eh sexta galera!!!! (pelo menos na minha cidade) uhuuuuuuuuuuuu!!!! _________________Goth Girls Ruls!!!
Fala galerinha!
Eu destrunxei o código aqui e consegui fazer com que eu pudesse obter a leitura do código como um inteiro, contudo, se um indivíduo maléfico ou desinformado inserir conteúdo alfanumérico no console *pruh* não consigo fazer a leitura com nextInt(), portanto eu teria que fazer a leitura como String mesmo, também poderia usar um try() catch(), mas agora o eclipse me deixou em**tecido e quero conseguir fazer dessa maneira pré-histórica mesmo.
Vou postar o código aqui soh para vcs entenderem o que eu escrevi.
A propósito, estou tentando fazer com que a inserção do código seja repetida caso o maléfico digite um número negativo ou um valor alfanumérico, porém, contudo, entretanto, testando da maneira como está aí, no momento em que o código eh lido da matriz no for, quando eh encontrado uma letra por exemplo ele exibe a mensagem "Digite somente números", mas continua a execução do resto do prog. Não sei se eh por causa da porcaria do break, mas se eu tiro o break daí essa mensagem eh repetida por toda a eternidade.
Alguém me dá a luz? (não literalmente, acho que nascer uma única vez jah eh castigo suficiente).
Hoje eh sexta galera!!!! (pelo menos na minha cidade) uhuuuuuuuuuuuu!!!!
bom, do jeito que você fez, em caso de erro, digitok (nome não reflete o que o código faz) tem que ser true para repetir o laço:
o inverso seria mais coerente - conteúdo de digitok equivale o que o nome diz
_________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
ElCabronPosts:14
E ae galera! Seguinte, eu quero ler o código através do teclado e saber se esse código que foi digitado eh número ou não. Contudo, quando eu tento imprimir o código convertido em matriz no console o Eclipse me chinga com o erro java.lang.ArrayIndexOutOfBoundsException e eu não entendo pq... jah pesquisei uma ca**lhada de sites e os exemplos que vih conferem com a minha lógica, eu acho.
Então para deixar claro: quero imprimir o codigo que converti em Array com println e verificar se esse ca**te eh numérico.
Sou newba! vlw!
_________________Goth Girls Ruls!!!
simuPosts:9416