Estou com o livro do Deitel aqui, e tem um exercício no capítulo 4.se alguém puder ajudar:
Um palindromo é uma seqüencia de caracteres que é lida da esquerda para direita ou da direita para a esquerda.Por exemplo, cada um dos seguintes inteiros de cinco digitos é um palíndromo: 12321, 55555, 45554 e 11611.Escreva um aplicativo que leia em um inteiro de cinco digitos e determine se ele é ou não um palíndromo.Se o número não for de cinco digitos, exiba uma mensagem de erro e permita que o usuário insira um novo valor.
Eu já fiz o básico aqui:
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){//declarando variávesintpalindromo;//criando o scannerScannerinput=newScanner(System.in);//promptSystem.out.print("Inserir um número de 5 digitos: ");palindromo=input.nextInt();}}
Inseri o scanner, mas para "contar" a quantidade de digitos tem algum comando com maxlength?como eu uso?porque dai eu sabendo o número de digitos posso usar.
if(numerodedigitos!=5)System.out.print("Insira outro número:");palindromo=input.nextInt();
Outro dúvida também como fazer para ver se é ou não um palindromo?
Duas soluções possíveis:
a) Converta o inteiro para uma string, e meça o comprimento da string
b) Você sabe que um inteiro tem 5 dígitos quando ele está entre 10000 e 99999
S
Super_Zica_Man
Tá, para transformar para string já li algo sobre isso, acho que algo com Parse para medir o comprimento vou dar uma procurada na net, não achei nada por enquanto nos documentos do java.
Legal, não tinha pensado nisso, só que não seria de 00001 e 99999?
ou ele não considera os zeros a esquerda?
T
thingol
a) Para converter para string, veja na documentação da classe java.lang.Integer a função toString
b) Acho que o tal exercício não considera os zeros à esquerda.
c) “Parse” é o contrário (converte uma string para inteiro).
d) De qualquer maneira, o tal exercício de palíndromo requer que você converta o valor para String. Isso torna a verificação de se o número é um palíndromo muito mais fácil. Veja na documentação da classe java.lang.String o método charAt.
xandevieira
Para fazer o palindromo vc pode usar o metodo reverse da classeStringBuffer
S
Super_Zica_Man
Muito bom, já me ajudou bastante.
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){//declarando variávesintpalindromo;//criando o scannerScannerinput=newScanner(System.in);//promptSystem.out.print("Inserir um número de 5 digitos: ");palindromo=input.nextInt();String.valueOf(palindromo);}}
Tá certo assim a conversão, mas não sei como usar o método reverse.Vou tentar ir mexendo aqui.Se algúem quiser dar uma luz ^^
S
Super_Zica_Man
Aff , post duplo
M
Miya
;
P
Popeye12345
Ola,
Nao sei se essa regra esta certa pois nunca tive vivencia com isso. Mas sabe de uma coisa (int) Use a classe stringBuilder, ela nao e thread-safe como o StringBuffer, isso o torna mais rapido. Meça o comprimento e compare.
Mas teste essa regra uqe o usuario acima citou, talvez seja desse jeito mesmo. E sempre bom solucionar problemas com pequenas solucoes.
grato!
ajob
Cara use um for para medir o tamanho do inteiro positivo
Ou seja se x tiver 1 digito ele vai retornar 1 e assim sucessivamaente…
quando o usuário entrar com o número ai tu pde usar uma outra questão que o proprio deitel passa que é para ler um inteiro de 5 digitos e separalos… Caso contrário vc mesmo faz…
tipow
os digitos das unidades basta verificar o resto da divisão por 10
os digitos da centena, bas ta verificar o resto da divisão por 100 menos o digito das unidade e depois vc divide por 10
assim sucessivamente…
prnto… dai basta verificar se os digitos complementares são iguais, tipow c0 = c4 e c1 = c3
Ou seja se x tiver 1 digito ele vai retornar 1 e assim sucessivamaente…
quando o usuário entrar com o número ai tu pde usar uma outra questão que o proprio deitel passa que é para ler um inteiro de 5 digitos e separalos… Caso contrário vc mesmo faz…
tipow
os digitos das unidades basta verificar o resto da divisão por 10
os digitos da centena, bas ta verificar o resto da divisão por 100 menos o digito das unidade e depois vc divide por 10
assim sucessivamente…
prnto… dai basta verificar se os digitos complementares são iguais, tipow c0 = c4 e c1 = c3
sacou???
espero ter ajudado… abraços
Ola ajob,
So uma coisa, vc nao achou esse seu metodo um pouco complicado pra iniciante(int)
grato!
ajob
Cara tipow…
honestamente, também começei a programar agora, fazem 10 dias e estou devorando o livro do deitel fazendo todas as questões tudo pq acho muito fascinante a ideia de programar então assim eu fiz essa questão desse jeito… deve haver jeitos mais simples, sempre tem… Mas com a bagagem que tinha no quarto capitulo eu resolvi assim, com uma diferença no lugar do for eu usei um while…
Qualquer dúvida… Se der eu ajjudo… abraço
Ei netShot… Concordo com você, mas tambem discordo… tipow o forum serve para isso mesmo, vai que o cara tenha procurado e não entendido a outra resolução… Ha um tempo tive uma duvida sobre orientação a objetos, ja tinha procurado em todo canto, mas por alguma razão eu não conseguia abstrair a idéia de orientção a objetos, por mais simples que ela é… então criei um tópico perguntando… e me responderam exatamente isso… pesquise… Foi mal ai… Se a coisa é simples e repetida pode ser que o cara não tenha entendido… tive que andar uns 10 km para sanear minha dúvida com os professores da ufc…
P
Popeye12345
ajob:
Cara tipow…
honestamente, também começei a programar agora, fazem 10 dias e estou devorando o livro do deitel fazendo todas as questões tudo pq acho muito fascinante a ideia de programar então assim eu fiz essa questão desse jeito… deve haver jeitos mais simples, sempre tem… Mas com a bagagem que tinha no quarto capitulo eu resolvi assim, com uma diferença no lugar do for eu usei um while…
Qualquer dúvida… Se der eu ajjudo… abraço
Ei netShot… Concordo com você, mas tambem discordo… tipow o forum serve para isso mesmo, vai que o cara tenha procurado e não entendido a outra resolução… Ha um tempo tive uma duvida sobre orientação a objetos, ja tinha procurado em todo canto, mas por alguma razão eu não conseguia abstrair a idéia de orientção a objetos, por mais simples que ela é… então criei um tópico perguntando… e me responderam exatamente isso… pesquise… Foi mal ai… Se a coisa é simples e repetida pode ser que o cara não tenha entendido… tive que andar uns 10 km para sanear minha dúvida com os professores da ufc…
Começando bem hein cara.
Tem todo o meu apoio no que precisar, seprecisar. =)
Mas uma coisa, acho que ja te falaram isso em outro topico, e melhor usar um for ao inves de um while…
Grato!
ajob
vlw :D…
Preucupa não que eu tou aqui direto, nem fecho a página quando estou estudando… O alucardeck tem ajudado bastante e adorei esse forum…