将数据从键盘加载到对象的arraylist(对象有多个参数)

时间:2016-05-24 22:33:07

标签: object arraylist java.util.scanner

我正在尝试将数据从用户/键盘(使用扫描仪)加载到对象的arraylist。我的构造函数(学生)有6个参数,但每个参数需要由用户单独添加(他们不能一次完成所有这些)。如果对象只有一个参数,我知道怎么做,但是当有多个参数时却不知道。如果我没有立即从用户那里获得所有六个参数,我不确定如何将我从用户获得的数据保存到数组中:

//constructor in Student class. 
Student (String sFirstName, String sLastName, int iHWAve, int iQuizAve, int iTestAve, int iProjectAve)
{
    super(sFirstName, sLastName);
    this.iHWAve=iHWAve;
    this.iQuizAve=iQuizAve;
    this.iTestAve=iTestAve;
    this.iProjectAve=iProjectAve;
    Student.this.CalcGrade();
}

//code from main method
ArrayList<Student> aoStudent = new ArrayList <>();

    int iStudCount;
    int iNumStudents;

for (iStudCount=0; iStudCount<iNumStudents; iStudCount++)           
    {   
        //these are the prompts for the data I need to get from the user
        System.out.println("Enter in the first name for Student "+(iStudCount+1));
        System.out.println("Enter in the last name for Student "+(iStudCount+1));
        System.out.println("Enter in the Quiz Average for Student "+(iStudCount+1));
        System.out.println("Enter in the HW Average for Student "+(iStudCount+1));
        System.out.println("Enter in the Test Average for Student"+(iStudCount+1));
        System.out.println("Enter in the Project Average for Student "+(iStudCount+1));
    }

1 个答案:

答案 0 :(得分:1)

好的,假设您想在Java中实现这一目标? (因为在你的剪辑中是一些“System.out.println”和“this”的东西)

我不知道数组的键盘输入机制。

如果“对象”来自同一类型,则可以使用:

Reading data from keyboard to store in string array

但是你在谈论Java对象或不同类型(int,String等)?我也不知道用户如何轻松输入Java对象...因为Java是静态类型的...这意味着编译器需要知道他之前处理的类型...(如果你不喜欢这......也许看看Python ......)

但是,在输入是Student类型的已知对象的情况下,我可以建议您使用一些可序列化/可反序列化的用户输入形式,如JSON。 这也可以保护用户无需在循环中输入输入... 因此,用户将输入这样的原始JSON类型的对象:

{\"sFirstName\":\"TheFirstName\", 
\"sLastName\":\"TheLastname\",
\"iHWAve\" : 0,
\"iQuizAve\": 0, 
\"iTestAve\": 0
\"iProjectAve\":0} 

(是的,我知道“逃避是非常可怕的......也许你也可以省略反斜杠......但是从未测试过在键盘上输入JSON)

这里有一些代码如何使用GSON库将这个JSON反序列化到您的学生:

Scanner reader = new Scanner(System.in);
System.out.println("Enter the student as JSON: ");
String userInput = reader.nextLine();

Gson gson = new Gson();  
Student student = gson.fromJson(userInput , Student.class);  

显然你必须将GSON包含为库依赖... 无论如何我很确定你的任务只是连续执行扫描仪提示......

Scanner reader = new Scanner(System.in);

System.out.println("Enter the students FirstName: ");
String firstName = reader.nextLine();
.
.
.
System.out.println("Enter the student iProjectAve: ");
int iProjectAve = reader.nextInt();