For循环未正确迭代

时间:2019-11-16 22:48:16

标签: java logic

问题如下,第一次迭代的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)

0 个答案:

没有答案