Vérificateur de nombre palindrome en Java : algorithmes avec boucles while et for
Qu'est-ce qu'un nombre palindrome ?
Un nombre palindrome se lit de la même façon de gauche à droite et de droite à gauche. Exemples : 121, 393, 48084. Ils présentent une symétrie axiale et sont souvent utilisés dans les énigmes algorithmiques.
En Java, la vérification de palindromes est courante dans les questions d'entretien et les défis de codage. L'algorithme est simple mais peut être implémenté de plusieurs façons.
Principe de l'algorithme
- Lire l'entier d'entrée.
- Inverser ses chiffres et stocker le résultat.
- Comparer le nombre inversé à l'original.
- S'ils correspondent, le nombre est un palindrome ; sinon, ce n'en est pas un.
Vérification avec une boucle while
Voici un programme Java concis qui utilise une boucle while pour inverser le nombre et déterminer s'il est un palindrome. Le code affiche les étapes intermédiaires pour illustrer le processus.
package com.guru99;
public class NombrePalindrome {
public static void main(String[] args) {
int nombreEntree = 171; // nombre à vérifier
int inverse = 0;
int temp = nombreEntree;
while (temp > 0) {
int dernierChiffre = temp % 10;
inverse = (inverse * 10) + dernierChiffre;
temp /= 10;
}
System.out.println("Nombre inversé : " + inverse);
if (inverse == nombreEntree) {
System.out.println("Le nombre est un palindrome.");
} else {
System.out.println("Le nombre n'est pas un palindrome.");
}
}
}
Sortie
Nombre inversé : 171 Le nombre est un palindrome.
Vérification avec une boucle for
La même logique peut s'exprimer avec une boucle for, ce qui peut être préférable quand le compteur de boucle s'exprime plus naturellement comme un index décrémenté.
package com.guru99;
public class NombrePalindrome {
public static void main(String[] args) {
int nombreEntree = 185; // nombre à vérifier
int inverse = 0;
int temp = nombreEntree;
for (; temp > 0; temp /= 10) {
int dernierChiffre = temp % 10;
inverse = (inverse * 10) + dernierChiffre;
}
System.out.println("Nombre inversé : " + inverse);
if (inverse == nombreEntree) {
System.out.println("Le nombre est un palindrome.");
} else {
System.out.println("Le nombre n'est pas un palindrome.");
}
}
}
Sortie
Nombre inversé : 581 Le nombre n'est pas un palindrome.
Considérations et bonnes pratiques
- Nombres négatifs : Par définition, les nombres négatifs ne sont pas considérés comme des palindromes à cause du signe moins initial. Retournez
falseimmédiatement si l'entrée est négative. - Débordement : L'inversion d'un entier 32 bits peut déborder. Pour du code de production, utilisez
longou vérifiez le débordement avant chaque multiplication. - Approche par chaîne : Convertir le nombre en chaîne et le comparer à son inverse est souvent plus simple et moins sujet aux erreurs, surtout pour de très grands nombres.
Pour plus de détails, consultez GeeksforGeeks et la discussion Stack Overflow sur l'inversion de nombres.
Java
- Maîtriser les boucles While et Do-While en C# : Syntaxe, exemples et bonnes pratiques
- Java Hello World : Votre premier programme
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Programme Java pour déterminer si un nombre est premier
- Programme Java pour lister les nombres premiers de 1 à 100
- Générer la suite de Fibonacci en Java : boucles for, while et récursivité
- Programme Java pour identifier les nombres d'Armstrong avec une boucle for
- Vérificateur de nombre palindrome en Java : algorithmes avec boucles while et for
- Maîtriser les boucles Python : For, While, Break, Continue et Enumerate expliqués