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

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

Mary-Kate Olsen
Lepaskan: 2024-12-27 07:21:09
asal
885 orang telah melayarinya

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

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();
Salin selepas log masuk
// Not Working Example
while (true) {
    System.out.print("Enter a sentence: ");
    int selection = scanner.nextInt();
    String sentence = scanner.nextLine();
}
Salin selepas log masuk

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!

sumber:php.cn
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