Ir ao conteúdo
  • Cadastre-se

Palíndromo numérico


N0vato

Posts recomendados

Bom gente, eu toh aprendendo Java agora e estou tentando fazer o seguinte exercício: 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.

   

import java.util.Scanner;

public static void main(String[] args)
{

int num;
int flag;
int a, b, c, d, e;

num = 0;

Scanner input = new Scanner(System.in);

flag = 1;

while(flag == 1)
{
System.out.print("Digite um número inteiro de 5 dígitos: ");
num = input.nextInt();

if(num <= 10000 || num >= 99999)
System.out.println("Erro. O número deve possuir 5 dígitos.");
else
flag = 2;
}

a = num / 10000;
b = (num / 1000) % 10;
c = (num / 100) % 10;
d = (num / 10) % 10;
e = num % 10;

System.out.printf("%d %d %d %d %d\n" ,a ,b ,c ,d ,e);

if(a == e && b == c)
{
System.out.printf("%d é um palíndromo!\n" ,num);
}
else
{
System.out.printf("%d não é um palíndromo!\n" ,num);
}

}

Por que mesmo que eu coloque um número que é um palíndromo como os do exemplo, o resulta não é o esperado ?

A sim, esqueci de dizer, a linha:

System.out.printf("%d %d %d %d %d\n" ,a ,b ,c ,d ,e);

eu coloquei apenas para ter certeza quais eram os valores armazenados em a,b,c,d e e.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Tem razao ja ia responder isso.. rsrs a comparaçao certa é entre b e d.

tenho outra sugestao de mudança no seu codigo no bloco antes dos calculos eu faria assim:


[COLOR="Red"] boolean flag = true;[/COLOR]
int a, b, c, d, e, [COLOR="Red"]num = 0;[/COLOR]

Scanner input = new Scanner(System.in);

[COLOR="Red"]while(flag)[/COLOR]
{
System.out.print("Digite um número inteiro de 5 dígitos: ");
num = input.nextInt();

if(num <= 10000 || num >= 99999)
System.out.println("Erro. O número deve possuir 5 dígitos.");
else
[COLOR="Red"]flag = false;[/COLOR]
}

destaquei em vermelho, onde mudei. eu prefiro usar valores booleanos nesse caso onde você diz que uma coisa é verdadeira ou nao.. ao invés de usar int, .. e quando declarar uma variavel que precisa ser inicializada.. ja zera ela na declaraçao.. assim evita de ter que escrever de novo a variavel para inicializar com essas duas pequenas mudançazinahs ja te economiza 3 linhas!

Link para o comentário
Compartilhar em outros sites

Nossa que terrível uheuehueheu, obrigado pela correção LNW. É verdade dif, tem razão, obrigado pela sugestão, realmente valores booleanos são uma escolha muito melhor nessa situação, é que eu não tenho muito o costume de usá-los, mas é o que eu vou fazer.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!