Java ArrayList用户输入/输出查询
我希望能得到一些帮助或指导。我对Java非常陌生,我刚刚开始编写(尝试)ArrayList类和测试程序。我对下面的示例有问题..程序运行,但当我想添加其他人的详细信息时,我在同一行上得到了名字和姓氏请求,无法找出我的错误..任何建议都将不胜感激Java ArrayList用户输入/输出查询,java,Java,我希望能得到一些帮助或指导。我对Java非常陌生,我刚刚开始编写(尝试)ArrayList类和测试程序。我对下面的示例有问题..程序运行,但当我想添加其他人的详细信息时,我在同一行上得到了名字和姓氏请求,无法找出我的错误..任何建议都将不胜感激 ArrayList <Person> details = new ArrayList<Person>(); String fName, lName; int age; char choice = '
ArrayList <Person> details = new ArrayList<Person>();
String fName, lName;
int age;
char choice = 'Y';
do {
System.out.print("Enter First Name: ");
fName = keyIn.nextLine();
System.out.print("Enter Last Name: ");
lName = keyIn.nextLine();
System.out.print("Enter Age: ");
age = keyIn.nextInt();
details.add (new Person (fName, lName, age));
System.out.print("Add Another Person? Y/N: ");
choice = keyIn.next().charAt(0);
}
while(choice =='Y' | choice == 'y');
for(Person p : details) {
System.out.println(p);
}
}
}
ArrayList details=new ArrayList();
字符串fName,lName;
智力年龄;
字符选择='Y';
做{
System.out.print(“输入名字:”);
fName=keyIn.nextLine();
System.out.print(“输入姓氏:”);
lName=keyIn.nextLine();
系统输出打印(“输入年龄:”;
age=keyIn.nextInt();
details.add(新人员(fName、lName、年龄));
系统输出打印(“添加其他人?是/否:”);
choice=keyIn.next().charAt(0);
}
while(choice=='Y'| choice=='Y');
用于(人员p:详细信息){
系统输出println(p);
}
}
}
当您调用age=keyIn.nextInt()时
它使用int
但保留后面的新行。那么这个
choice = keyIn.next().charAt(0); // <-- returns immediately with '\n'.
首先,这里是一个如何修复代码的示例。我在这里做的主要修改是使用System.out.println()静态方法,而不是System.out.print()方法,该方法不会生成“新行”。以下是一个示例方法:
public static void main( String[] args ) throws IOException{
ArrayList<Person> myPeople = new ArrayList<Person>();//Create a person Array.
Scanner scan = new Scanner(System.in);//Create your scanner object here.
String keepAsking = "Y";
do {
System.out.println("Enter your first name: ");
String fName = scan.next();
System.out.println("Enter your last name: ");
String lName = scan.next();
System.out.println("Enter your age: ");
int age = scan.nextInt();
Person thisPerson = new Person(fName, lName, age);
myPeople.add(thisPerson);
for(Person p: myPeople) {
System.out.println(p.getInfo());
System.out.println();
}
System.out.println("Do you want to let someone else enter their info (y/n)?");
keepAsking = scan.next();
}while(keepAsking.equalsIgnoreCase("Y"));
System.out.println("Thank you! Goodbye!");
}
正如您所看到的,您现在获得了新的输入“新行”。另一个技巧是,与每次打印“System.out.println()”不同,您可以从技术上使用静态导入,只需导入out即可缩短代码:
import static java.lang.System.out;
现在,您可以简单地执行以下操作:
out.println()
而不是每次都要输入“系统” 请修复您的代码。。。您的while循环有一个括号问题,多亏它解决了我的问题,显然java扫描器中有一个bug,这意味着您不能在扫描完nextInt之后再使用nextLine进行扫描。一个解决办法是使用一个单独的文本和整数扫描仪!
Enter your first name:
Michael
Enter your last name:
Jordan
Enter your age:
55
First name: Michael
Last name: Jordan
Age: 55
Do you want to let someone else enter their info (y/n)?
y
Enter your first name:
Kobe
Enter your last name:
Bryant
Enter your age:
41
First name: Michael
Last name: Jordan
Age: 55
First name: Kobe
Last name: Bryant
Age: 41
Do you want to let someone else enter their info (y/n)?
y
Enter your first name:
Tom
Enter your last name:
Brady
Enter your age:
41
First name: Michael
Last name: Jordan
Age: 55
First name: Kobe
Last name: Bryant
Age: 41
First name: Tom
Last name: Brady
Age: 41
Do you want to let someone else enter their info (y/n)?
n
Thank you! Goodbye!
import static java.lang.System.out;
out.println()