Menggunakan Scanner.nextLine() untuk Input Pengguna
Soalan:
Mengapa kaedah scanner.nextLine() berkelakuan berbeza dalam dua kod Java berikut contoh?
// Working Example Scanner scanner = new Scanner(System.in); System.out.print("Enter a sentence: "); String sentence = scanner.nextLine();
// Not Working Example while (true) { System.out.print("Enter a sentence: "); int selection = scanner.nextInt(); String sentence = scanner.nextLine(); }
Jawapan:
Perbezaan dalam tingkah laku timbul daripada cara scanner.nextInt() menggunakan input berbanding scanner.nextLine().
Dalam contoh yang berfungsi, scanner.nextLine() membaca keseluruhan baris input, termasuk ruang, sehingga ia menemui watak baris baharu. Sebaliknya, scanner.nextInt() hanya membaca bahagian integer input, meninggalkan sebarang aksara yang tinggal dalam penimbal input.
Apabila panggilan nextInt() digunakan tanpa sebarang panggilan berikutnya ke nextLine(), sebarang aksara yang tinggal dalam penimbal input (cth., aksara baris baharu) tidak digunakan, yang boleh menyebabkan isu untuk nextLine() seterusnya panggilan.
Dalam contoh tidak berfungsi, selepas pengguna memasukkan nombor, aksara baris baharu yang selebihnya tidak digunakan oleh nextInt(). Akibatnya, panggilan seterusnya ke nextLine() serta-merta membaca aksara baris baharu, menyebabkan rentetan kosong ditetapkan pada ayat.
Untuk menyelesaikan isu ini, panggilan tambahan ke scanner.nextLine() boleh dibuat selepas setiap nextInt() panggilan untuk menggunakan mana-mana aksara yang tinggal dalam penimbal input.
Atas ialah kandungan terperinci Mengapakah `scanner.nextLine()` Berkelakuan Berbeza Selepas `scanner.nextInt()` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!