Java - 记录每个另一个输入的多个用户输入

Java - record multiple user inputs per another input

此程序应要求输入学生姓名。然后,对于每个学生,将记录四个成绩。然后再次迭代,直到用户输入"C"退出循环。然后打印结果。 它仅显示输入的最后四个元素。我认为我的 for 循环不会完成我想要的。我可能需要 .forEach 吗?在此之后,我还必须分别对每个学生的每四个数字求和。每个学生必须有不同的 arrayList 吗? 这是我目前所拥有的:

package arrayList;
import java.util.Scanner;
import java.util.ArrayList;

public class TestGrades {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
ArrayList<String> studentName = new ArrayList<String>(); 
boolean loop = true;
while (loop) {
  System.out.println(" Please Enter Student Name");
  sc.nextLine();

      String student = sc.nextLine();

        if(student.equals("C"))
        {
          break;    
        }
        else
        {
          studentName.add(student);
        }


        ArrayList<Double> studentGrade = new ArrayList<Double>();
    System.out.println("Please enter Student Grade");
    for (int j = 0; j < 4; j++) {

        Double grade = sc.nextDouble();
        studentGrade.add(grade);  
    }    
    System.out.println(studentName);
    System.out.print(studentGrade);
    }
}
}

我想按条目顺序打印每个 arrayList 的元素,首先是 studentName,然后是 studentGrade。 .forEach 有帮助吗?

对于初学者,我建议使用 Console class 让用户输入。 还有:

  1. 您第一次调用 sc.nextLine() 时,您正在从 用户并且永远不会存储它。
  2. 你应该初始化你的 ArrayList<Double> studentGrade 循环。每次循环输入时,它都会创建一个 新名单,你失去了以前的学生成绩 循环。

运行这个,如果还要改成Scanner,就用Scanner.

import java.util.Scanner;
import java.util.ArrayList;
import java.io.Console;

public class Test {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> studentName = new ArrayList<String>(); 
ArrayList<Double> studentGrade = new ArrayList<Double>();
boolean loop = true;

while (loop) {

    System.out.println(" Please Enter Student Name");
    String student = scanner.nextLine();

        if(student.equals("C"))
        {
          break;    
        }
        else
        {
          studentName.add(student);
        }


    System.out.println("Please enter Student Grade");
    for (int j = 0; j < 4; j++) {

        Double grade = Double.parseDouble(scanner.nextLine());
        studentGrade.add(grade);  
    }    

    System.out.println(studentName);
    System.out.print(studentGrade);
  }
}
}