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
Barbara Streisandasal
2024-12-14 13:30:11521semak imbas

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;
            }
        }
    }
}

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!

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