我正在尝试将数据从用户/键盘(使用扫描仪)加载到对象的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));
}
答案 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();