Rumah > Java > javaTutorial > Mengapakah `scanner.nextLine()` Gagal Selepas `scanner.nextInt()` dalam Java?

Mengapakah `scanner.nextLine()` Gagal Selepas `scanner.nextInt()` dalam Java?

Mary-Kate Olsen
Lepaskan: 2024-12-25 01:36:09
asal
1036 orang telah melayarinya

Why Does `scanner.nextLine()` Fail After `scanner.nextInt()` in Java?

Memahami scanner.nextLine() dan Kesannya pada Input Seterusnya

Kaedah nextLine() Java, yang ditakrifkan dalam kelas java.util.Scanner, biasanya digunakan untuk baca baris teks daripada input standard (papan kekunci pengguna). Walau bagaimanapun, penggunaannya dalam senario tertentu boleh membawa kepada tingkah laku yang tidak dijangka.

Pertimbangkan contoh berikut di mana nextLine() digunakan dalam gelung menu:

Scanner scanner = new Scanner(System.in);

while (true) {
    // Display menu options
    // ...

    System.out.print("Please enter your selection: ");
    int selection = scanner.nextInt();

    if (selection == 1) {
        // This issue arises here when reading a sentence
        System.out.print("Enter a sentence: ");
        String sentence = scanner.nextLine();
    }
    // ...
}
Salin selepas log masuk

Apabila kod ini dilaksanakan, ia gagal untuk menggesa pengguna bagi ayat apabila pengguna memasukkan nilai 1. Sebaliknya, kod tersebut meneruskan terus ke gesaan input seterusnya untuk index.

Sebab kelakuan ini terletak pada sifat nextLine(). Apabila digunakan selepas nextInt(), ia membaca dan menggunakan aksara baris baharu (n) yang tinggal dalam aliran input. Akibatnya, apabila nextLine() digunakan untuk membaca ayat, ia menemui penimbal input kosong dan mengembalikan rentetan kosong.

Untuk menyelesaikan isu ini, perlu menggunakan aksara baris baharu secara eksplisit menggunakan scanner.nextLine( ) selepas setiap pengimbas.nextInt(). Ini memastikan penimbal input dikosongkan dan nextLine() boleh membaca input pengguna untuk ayat dengan betul.

Dengan mengikuti garis panduan ini, anda boleh mengelakkan ketidakkonsistenan semasa menggunakan nextLine() dan memastikan kod anda mengendalikan pengguna dengan tepat input dalam kedua-dua senario satu dan berbilang laluan.

Atas ialah kandungan terperinci Mengapakah `scanner.nextLine()` Gagal Selepas `scanner.nextInt()` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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