Inverser un entier sans tableaux en Java
Votre requête concerne l'inversion d'un entier sans recours à des tableaux ou des chaînes. Vous rencontrez des difficultés à comprendre la logique derrière l'extrait de code suivant :
while (input != 0) { reversedNum = reversedNum * 10 + input % 10; input = input / 10; }
Principes de l'inversion d'entiers
Pour comprendre la logique derrière cet algorithme, considérez les concepts suivants :
Pseudocode
L'algorithme d'inversion suit ces étapes :
Travail Code
Voici une version mise à jour du code fourni qui prend en charge les grands entiers d'entrée et gère les éventuels débordements :
<code class="java">public int reverseInt(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { reversedNum = reversedNum * 10 + input_long % 10; input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }
Inverser les nombres impairs uniquement
Pour inverser uniquement les chiffres impairs dans un entier, vous pouvez implémenter le même algorithme mais ajouter une instruction conditionnelle pour ignorer les chiffres pairs. Par exemple :
public int reverseOddDigits(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { if (input_long % 2 == 1) { reversedNum = reversedNum * 10 + input_long % 10; } input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }</code>
Avec ce code modifié, vous pouvez désormais inverser sélectivement les chiffres impairs de votre entier saisi.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!