Java 用于环路合并线路
我正在尝试编写一个for循环,允许用户输入五个姓名和年龄。我遇到的问题是,它第一次运行正确,但第二次运行时,名字和姓氏组合在一起,不允许两个字符串条目。它将允许一个然后移动到年龄的整数条目。感谢您的帮助Java 用于环路合并线路,java,loops,Java,Loops,我正在尝试编写一个for循环,允许用户输入五个姓名和年龄。我遇到的问题是,它第一次运行正确,但第二次运行时,名字和姓氏组合在一起,不允许两个字符串条目。它将允许一个然后移动到年龄的整数条目。感谢您的帮助 import java.util.Scanner; public class QueueImp extends people{ public static void main(String[] args) { String userL; String
import java.util.Scanner;
public class QueueImp extends people{
public static void main(String[] args) {
String userL;
String userF;
int userA;
int userchoice = 0;
Scanner scnr = new Scanner(System.in);
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("");
pName(userL, userF, userA);
}
import java.util.Scanner;
公共类QueueImp扩展了人{
公共静态void main(字符串[]args){
字符串userL;
字符串userF;
int userA;
int userchoice=0;
扫描仪scnr=新扫描仪(System.in);
对于(int i=0;i而言,原因是换行符(输入整数)尚未使用。因此,它被下一个循环迭代的scnr.nextLine()
使用,因此跳过第二个姓氏输入。要使用换行符,请在扫描整数后再添加1个scnr.nextLine()
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);
}
对于(int i=0;i请使用next
代替nextLine
System.out.print("Please enter last name: ");
userL = scnr.next();
next()
只能在空格前读取输入。它不能读取空格分隔的两个单词。此外,next()
在读取输入后将光标放在同一行
@编辑:
nextLine()
要阅读整行内容,可以使用nextLine()
供参考:
如果您想使用相同的than,请按Integer.parseInt
userA = Integer.parseInt(scnr.nextInt());
使用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);
您需要使用nextInt
留下的悬空新行,使用对象数组来实现此操作使用next();
而不是nextLine();
请解释原因。