Maison > Java > javaDidacticiel > Comment le code Java fourni inverse-t-il un entier sans utiliser de tableaux ou de chaînes ?

Comment le code Java fourni inverse-t-il un entier sans utiliser de tableaux ou de chaînes ?

Patricia Arquette
Libérer: 2024-11-04 21:41:02
original
945 Les gens l'ont consulté

How does the provided Java code reverse an integer without using arrays or strings?

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;   
}
Copier après la connexion

Principes de l'inversion d'entiers

Pour comprendre la logique derrière cet algorithme, considérez les concepts suivants :

  • Module (%) : Lorsque l'entrée est divisée par 10, le résultat est le dernier chiffre. (par exemple, 1234 % 10 est égal à 4.)
  • Multiplication par 10 : Multiplier un entier par 10 "le décale vers la gauche", en ajoutant un zéro à sa droite. (par exemple, 5 * 10 = 50.)
  • Division par 10 : Cette opération supprime le chiffre le plus à droite. (par exemple, 75/10 = 7.)

Pseudocode

L'algorithme d'inversion suit ces étapes :

  1. Extraire le chiffre le plus à droite de l'entrée.
  2. Ajouter le chiffre extrait au numéro inversé variable.
  3. Multipliez ReverseNum par 10 pour décaler ses chiffres vers la gauche.
  4. Divisez l'entrée par 10 pour supprimer le chiffre examiné.
  5. Répétez les étapes 1 à 4 jusqu'à ce que l'entrée atteigne zéro.

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;
}
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal