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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 01:36:09833semak imbas

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();
    }
    // ...
}

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:
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