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
Mary-Kate Olsenasal
2024-12-27 07:21:09887semak imbas

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

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