问题如下,第一次迭代的main中的for循环要求输入学生的姓名, 但是,在第二次迭代中,它跳过了这一行,而没有使用用户输入的名称。
在为5个学生插入信息后,这是一些输出:
输入ID 88
输入test88的结果
输入test88的结果
输入test88的结果
输入test88的结果
输入test88的结果
对于研究生,请键入p,对于本科生,请键入u [boris,22,p,44,u,66,p,77,u,88]
您首先可以看到Boris及其平均成绩,但由于某种原因,它以p为第二名学生的名字,而实际上这是为了检查Boris是否为研究生。
public static void main(String [] args){
ArrayList<String> storage = new ArrayList<String>();
Scanner input = new Scanner(System.in);
postgrad obj1 = new postgrad();
undergrad obj2 = new undergrad();
for (int i=0; i<6; i++) {
System.out.print("Enter Student name ");
String name = input.nextLine();
storage.add(name);
System.out.print("Enter ID ");
String ID = input.nextLine();
storage.add(ID);
System.out.print("Enter result for test");
int test1 = input.nextInt();
System.out.print("Enter result for test");
int test2 = input.nextInt();
System.out.print("Enter result for test");
int test3 = input.nextInt();
System.out.print("Enter result for test");
int test4 = input.nextInt();
System.out.print("Enter result for test");
int test5 = input.nextInt();
System.out.print("Type p for post-grad, type u for undergrad ");
String answer = input.nextLine();
if (answer.equals("p")) {
int temp = postgrad.average(test1, test2, test3, test4, test5);
String finalGrade = Integer.toString(temp);
storage.add(finalGrade);
String R = postgrad.passFail(temp);
storage.add(R);
}
else if(answer.contentEquals("u")) {
int temp = undergrad.average(test1, test2, test3, test4, test5);
String finalGrade = Integer.toString(temp);
storage.add(finalGrade);
String R = undergrad.passFail(temp);
storage.add(R);
}
System.out.print(storage)