首頁 > Java > java教程 > 主體

所提供的 Java 程式碼如何在不使用陣列或字串的情況下反轉整數?

Patricia Arquette
發布: 2024-11-04 21:41:02
原創
887 人瀏覽過

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

在Java 中不使用陣列反轉整數

您的查詢涉及在不求助於陣列或字串的情況下反轉整數。您在理解以下程式碼片段背後的基本原理時遇到困難:

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}
登入後複製

整數反轉原理

要掌握此演算法背後的邏輯,請考慮以下概念:

  • 模數(%): 輸入除以10 時,結果為最後一位數字。 (例如,1234 % 10 等於 4。)
  • 乘以 10: 將整數乘以 10“將其向左移動”,在其右側添加一個零。 (例如,5 * 10 = 50。)
  • 除以 10: 此動作刪除最右邊的數字。 (例如,75 / 10 = 7。)

偽代碼

反轉演算法遵循以下步驟:

  1. 提取輸入的最右邊的數字。
  2. 將擷取的數字附加到reverseNum變數。
  3. 將reversedNum乘以10將其數字向左移動。
  4. 將輸入除以10刪除檢查的數字。
  5. 重複步驟 1-4,直到輸入達到零。

工作代碼

這裡是更新版本提供的程式碼可容納大輸入整數並處理可能的溢位:

<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;
}
登入後複製

僅反轉奇數

要只反轉整數中的奇數,您可以實現相同的演算法,但加入條件語句來跳過偶數位。例如:

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>
登入後複製

使用此修改後的程式碼,您現在可以選擇性地反轉輸入整數中的奇數位。

以上是所提供的 Java 程式碼如何在不使用陣列或字串的情況下反轉整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板