Rumah > Java > javaTutorial > Bagaimanakah kod Java yang disediakan membalikkan integer tanpa menggunakan tatasusunan atau rentetan?

Bagaimanakah kod Java yang disediakan membalikkan integer tanpa menggunakan tatasusunan atau rentetan?

Patricia Arquette
Lepaskan: 2024-11-04 21:41:02
asal
939 orang telah melayarinya

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

Terbalikkan Integer Tanpa Tatasusunan dalam Java

Pertanyaan anda berkenaan dengan membalikkan integer tanpa menggunakan tatasusunan atau rentetan. Anda menghadapi kesukaran untuk memahami rasional di sebalik coretan kod berikut:

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

Prinsip Pembalikan Integer

Untuk memahami logik di sebalik algoritma ini, pertimbangkan konsep berikut:

  • Modulus (%): Apabila input dibahagikan dengan 10, hasilnya ialah digit terakhir. (cth., 1234 % 10 sama dengan 4.)
  • Darab dengan 10: Mendarab integer dengan 10 "menganjakkannya ke kiri," menambah sifar ke kanannya. (cth., 5 * 10 = 50.)
  • Bahagian dengan 10: Operasi ini mengeluarkan digit paling kanan. (cth., 75 / 10 = 7.)

Pseudokod

Algoritma pembalikan mengikut langkah berikut:

  1. Ekstrak digit paling kanan input.
  2. Tambah digit yang diekstrak pada pembolehubah Nombor terbalik.
  3. Darab Nombor terbalik dengan 10 untuk mengalihkan digitnya ke kiri.
  4. Bahagikan input dengan 10 hingga keluarkan digit yang diperiksa.
  5. Ulang langkah 1-4 sehingga input mencapai sifar.

Kod Kerja

Berikut ialah versi terkini bagi kod yang disediakan yang menampung integer input yang besar dan mengendalikan kemungkinan limpahan:

<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;
}
Salin selepas log masuk

Terbalikkan Nombor Ganjil Sahaja

Untuk membalikkan hanya digit ganjil dalam integer, anda boleh melaksanakan algoritma yang sama tetapi tambahkan pernyataan bersyarat untuk melangkau digit genap. Contohnya:

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>
Salin selepas log masuk

Dengan kod yang diubah suai ini, anda kini boleh terbalik secara selektif digit ganjil dalam integer input anda.

Atas ialah kandungan terperinci Bagaimanakah kod Java yang disediakan membalikkan integer tanpa menggunakan tatasusunan atau rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan