Heim  >  Artikel  >  Java  >  Wie kehrt der bereitgestellte Java-Code eine Ganzzahl um, ohne Arrays oder Strings zu verwenden?

Wie kehrt der bereitgestellte Java-Code eine Ganzzahl um, ohne Arrays oder Strings zu verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-04 21:41:02889Durchsuche

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

Umkehren einer Ganzzahl ohne Arrays in Java

Ihre Anfrage betrifft das Umkehren einer Ganzzahl ohne Rückgriff auf Arrays oder Strings. Sie haben Schwierigkeiten, die Logik hinter dem folgenden Codeausschnitt zu verstehen:

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}

Prinzipien der Ganzzahlumkehr

Um die Logik hinter diesem Algorithmus zu verstehen, berücksichtigen Sie die folgenden Konzepte:

  • Modul (%): Wenn die Eingabe durch 10 geteilt wird, ist das Ergebnis die letzte Ziffer. (z. B. 1234 % 10 entspricht 4.)
  • Multiplikation mit 10: Das Multiplizieren einer Ganzzahl mit 10 „verschiebt sie nach links“ und fügt rechts eine Null hinzu. (z. B. 5 * 10 = 50.)
  • Division durch 10: Diese Operation entfernt die Ziffer ganz rechts. (z. B. 75 / 10 = 7.)

Pseudocode

Der Umkehralgorithmus folgt diesen Schritten:

  1. Extrahieren Sie den Ziffer ganz rechts der Eingabe.
  2. Fügen Sie die extrahierte Ziffer an die Variable „reversedNum“ an.
  3. Multiplizieren Sie „reversedNum“ mit 10, um die Ziffern nach links zu verschieben.
  4. Dividieren Sie die Eingabe durch 10 bis Entfernen Sie die untersuchte Ziffer.
  5. Wiederholen Sie die Schritte 1-4, bis die Eingabe Null erreicht.

Arbeitscode

Hier ist eine aktualisierte Version von Der bereitgestellte Code, der große eingegebene Ganzzahlen berücksichtigt und einen möglichen Überlauf behandelt:

<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;
}

Nur ​​ungerade Zahlen umkehren

Um nur ungerade Ziffern in einer Ganzzahl umzukehren, können Sie implementieren den gleichen Algorithmus, aber fügen Sie eine bedingte Anweisung hinzu, um gerade Ziffern zu überspringen. Zum Beispiel:

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>

Mit diesem geänderten Code können Sie jetzt die ungeraden Ziffern in Ihrer eingegebenen Ganzzahl selektiv umkehren.

Das obige ist der detaillierte Inhalt vonWie kehrt der bereitgestellte Java-Code eine Ganzzahl um, ohne Arrays oder Strings zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn