簡體   English   中英

在Java中,每次迭代時如何在循環內清空緩沖區?

[英]How do I empty the buffer inside the loop each iteration in Java?

我正在寫一個for循環來填充數組。 這是我的代碼:

for (int i = 0; i < students.length; i++)
    {
        System.out.println("Student " + (i+1));

        System.out.print("First Name: ");
        students[i][0] = keyboard.nextLine();

        System.out.print("Last Name: ");
        students[i][1] = keyboard.nextLine();

        System.out.print("Date of Birth (MM/DD/YYYY): ");
        students[i][2] = keyboard.nextLine();

    }

但是,當我運行它時,輸出以下內容:

名:姓:

並且只會讀取一個字符串的名字和姓氏。

這僅發生在第一次迭代中,隨后的迭代都很好。 我認為這可能與清空緩沖區有關,但是為什么它僅在第一次發生?

我想知道您是否在調用此代碼塊之前沒有正確處理行尾字符。 您是否使用Scanner的其他任何方法,例如nextInt(),nextDouble()或next()? 如果是這樣,那么您可能需要在這些方法調用之后跟隨對nextLine()的調用,以吞沒行標記的結尾。 例如

int myInt = keyboard.nextInt();
keyboard.nextLine();  // call this to swallow end of line character

double myDouble = keyboard.nextDouble();
keyboard.nextLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM