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);
添加回答
举报