Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList用户输入/输出查询_Java - Fatal编程技术网

Java ArrayList用户输入/输出查询

Java ArrayList用户输入/输出查询,java,Java,我希望能得到一些帮助或指导。我对Java非常陌生,我刚刚开始编写(尝试)ArrayList类和测试程序。我对下面的示例有问题..程序运行,但当我想添加其他人的详细信息时,我在同一行上得到了名字和姓氏请求,无法找出我的错误..任何建议都将不胜感激 ArrayList <Person> details = new ArrayList<Person>(); String fName, lName; int age; char choice = '

我希望能得到一些帮助或指导。我对Java非常陌生,我刚刚开始编写(尝试)ArrayList类和测试程序。我对下面的示例有问题..程序运行,但当我想添加其他人的详细信息时,我在同一行上得到了名字和姓氏请求,无法找出我的错误..任何建议都将不胜感激

    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()