Estou com o livro do Deitel aqui, e tem um exercício no capítulo 4.se alguém puder ajudar:
Eu já fiz o básico aqui:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
//declarando variáves
int palindromo;
//criando o scanner
Scanner input = new Scanner(System.in);
//prompt
System.out.print("Inserir um número de 5 digitos: ");
palindromo = input.nextInt();
}
}[/code]
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.
[code]if (numero de digitos != 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
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?
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.
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
//declarando variáves
int palindromo;
//criando o scanner
Scanner input = new Scanner(System.in);
//prompt
System.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 ^^
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.
Cara use um for para medir o tamanho do inteiro positivo
int k=0;
for(int i =1; (Math.pow(10,i)-1)-x>0; i++)
k=i;
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
[quote=ajob]Cara use um for para medir o tamanho do inteiro positivo
int k=0;
for(int i =1; (Math.pow(10,i)-1)-x>0; i++)
k=i;
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[/quote]
Ola ajob,
So uma coisa, vc nao achou esse seu metodo um pouco complicado pra iniciante(int)
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…
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…[/quote]
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…