3 回答

TA貢獻2036條經驗 獲得超8個贊
請使用next
insted的的nextLine
System.out.print("Please enter last name: "); userL = scnr.next();
next()
只能讀取輸入直到空格。它無法讀取由空格分隔的兩個單詞。此外,next()
在讀取輸入后將光標置于同一行。
@Edit: nextLine()
讀取包含單詞之間空格的輸入(即,它讀取到行尾 \n)。讀取輸入后,nextLine()
將光標定位在下一行。
要閱讀整行,您可以使用nextLine()
.
如果你想使用相同的比請使用這樣來消耗換行符 Integer.parseInt
userA = Integer.parseInt(scnr.nextInt());

TA貢獻1829條經驗 獲得超13個贊
原因是換行符(來自輸入整數)還沒有被消耗。因此,它被scnr.nextLine()下一次循環迭代消耗,因此跳過第二個姓氏輸入。要使用換行符,請scnr.nextLine()在掃描整數后立即加 1 。
for(int i = 0; i<5; i++) {
System.out.print("Please enter last name: ");
userL = scnr.nextLine();
System.out.println("");
System.out.println("Please enter first name: ");
userF = scnr.nextLine();
System.out.println("Please enter age: ");
userA = scnr.nextInt();
System.out.println("");
scnr.nextLine();
pName(userL, userF, userA);
}

TA貢獻1772條經驗 獲得超6個贊
使用scnr.next()將解決您的問題。
為什么它不工作scnr.nextLine()是因為 next() 只會返回空格之前的內容。nextLine() 在返回當前行后自動向下移動掃描儀。您無法輸入詳細信息的第二次迭代的原因是指針在第二次迭代本身之前已經向前移動。
System.out.print("Please enter last name: ");
userL = scnr.next();
System.out.println("Please enter first name: ");
userF = scnr.next();
System.out.println("Please enter age: ");
userA = scnr.nextInt();
System.out.println(userL + " " + userF + " " + userA);
添加回答
舉報