Membetulkan Kelakuan nextLine()
Isu yang dihadapi apabila menggunakan nextLine() dalam contoh kod kedua berpunca daripada gabungan nextInt() dan nextLine().
Masalah dengan nextInt()
nextLine() menggunakan keseluruhan baris, termasuk ruang putih dan aksara yang dimasukkan sebelum menekan kekunci Enter. Walau bagaimanapun, nextInt() hanya menggunakan nilai berangka. Jika aksara bukan angka atau ruang putih mengikut nombor itu, nextLine() akan cuba membacanya, mengakibatkan tingkah laku yang tidak dijangka.
Penyelesaian: Gunakan Baki Baris Baharu
Untuk memastikan bahawa nextLine() membaca baris lengkap seperti yang dimaksudkan, anda boleh menambah panggilan nextLine() selepas setiap nextInt() untuk menggunakan sebarang baki aksara pada baris. Ini memastikan bahawa apabila nextLine() digunakan untuk membaca ayat, ia akan menerima baris yang lengkap.
Contoh dengan Pembetulan:
// Example #2 (Corrected) import java.util.Scanner; class Test { public void menu() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\nMenu Options\n"); System.out.println("(1) - do this"); System.out.println("(2) - quit"); System.out.print("Please enter your selection:\t"); int selection = scanner.nextInt(); scanner.nextLine(); // Consume remaining newline if (selection == 1) { System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println("\nYour sentence:\t" + sentence); System.out.println("Your index:\t" + index); } else if (selection == 2) { break; } } } }
Atas ialah kandungan terperinci Mengapakah `nextLine()` Berlaku Salah Selepas `nextInt()` dan Bagaimana Ia Boleh Dibetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!