Java - 接受用户输入来创建未知数量的类对象/数组/数组列表

标签 java class object input sum

我需要允许用户输入任意数量的学生。他们按“C”结束数据输入。我正在考虑创建一个学生类(class)(我的代码目前不代表这一点)和每个学生 4 个对象。每组 4 个对象是要相加并平均的数字等级。

我已经尝试过使用 while 循环来制作 arrayList,并且我已经研究过 map 。每组 4 个成绩对应一个学生,必须分别求和和平均。

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

public class TestGrades {

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);
    }
}
}

这里的问题确实是,我将所有输入的数字都放在一个 arrayList 中,并且我不知道每次输入新学生时是否可以自动创建一个新的 arrayList。理想情况下,每个 arrayList 仅包含 4 个 double 值。

最佳答案

请注意,成绩与学生相关,并且始终限制为 4。 因此,我建议实现一个类(class)学生的动态列表,其中包含成绩数组。

示例:

import java.util.Scanner;
import java.util.ArrayList;

public class TestGrades {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
ArrayList<Student> studlist = new ArrayList<Student>(); 

boolean loop = true;
while (loop) {

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

        if(scanedline.equals("C"))
        {
          break;    
        }
        else
        {
          studlist.add(new Student(scanedline));
        }


    System.out.println("Please enter Student Grade");
        for (int j = 0; j < 4; j++)
        {
    System.out.print(""+j+">");
        Double scannedgrade = Double.parseDouble(scanner.nextLine());
        studlist.get(studlist.size() - 1).grade[j]=scannedgrade;
        }    

    System.out.println(studlist.get(studlist.size() - 1).name);
    for (int j = 0; j < 4; j++)
        System.out.print(studlist.get(studlist.size() - 1).grade[j] + " ");
    System.out.println("");
    }
}

private static class Student 
{
    String name;
    Double [] grade;

    Student (String s)
    {
        this.name = s;
        grade = new Double[4];
    }

}

}

关于Java - 接受用户输入来创建未知数量的类对象/数组/数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160129/

相关文章:

java - 如何使用 JDK8 可选为可空字段创建自定义 IntelliJ getter 模板

javascript - 向 JS 对象添加额外的值

java - JMS 2.0 规范 - JMS 提供者如何检测 JMS 客户端对 Message 对象的更改?

java - Gson - 根据字段值反序列化为特定对象类型

java - "Main Method not Public"- 尝试在 Eclipse 上运行程序时出现错误消息

php - PHP 中的 self::vs className::inside static className 方法

javascript - 在 JavaScript 中对自定义对象数组进行排序

javascript - 计算对象属性给出与点表示法不同的结果

以@("at"符号开头的Java变量)

c++ - 如何解释我在源代码中找到的这个 C++ 类声明?