Rumah > Java > javaTutorial > Mengapakah `nextLine()` Berlaku Salah Selepas `nextInt()` dan Bagaimana Ia Boleh Dibetulkan?

Mengapakah `nextLine()` Berlaku Salah Selepas `nextInt()` dan Bagaimana Ia Boleh Dibetulkan?

Barbara Streisand
Lepaskan: 2024-12-14 13:30:11
asal
456 orang telah melayarinya

Why Does `nextLine()` Misbehave After `nextInt()` and How Can It Be Fixed?

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;
            }
        }
    }
}
Salin selepas log masuk

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!

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