Rumah >Java >javaTutorial >Mengapakah `scanner.nextLine()` Gagal Selepas `scanner.nextInt()` dalam Java?
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!