Java,计算学生课堂上作为方法学习同一课程的学生人数

Java,计算学生课堂上作为方法学习同一课程的学生人数,java,class,methods,count,Java,Class,Methods,Count,我正在尝试编写一个名为“Student”的java类,它有一个名为“courseCode”的属性,用户可以在其中输入任何他想要的课程代码 *我不知道课程代码,我会让用户输入他想要的任何课程代码 例如: Student st1 = new Student("William", .., .., "CS 124"); Student st2 = new Student("James", .., .., "AU 487"

我正在尝试编写一个名为“Student”的java类,它有一个名为“courseCode”的属性,用户可以在其中输入任何他想要的课程代码

*我不知道课程代码,我会让用户输入他想要的任何课程代码

例如:

Student st1 = new Student("William", .., .., "CS 124");



Student st2 = new Student("James", .., .., "AU 487");



Student st3 = new Student("David", .., .., "CS 124");



Student st4 = new Student("Richard", .., .., "CS 124");



Student st5 = new Student("John", .., .., "AU 487");
Student.numberOfStudentsInCourse("AU 487");
在上述示例中,3名学生在“CS 124”课程中注册,2名学生在“AU 487”课程中注册

我想在Student类本身中创建一个静态方法,可以将课程代码作为输入,并返回注册在同一课程中的学生人数。

例如:

Student st1 = new Student("William", .., .., "CS 124");



Student st2 = new Student("James", .., .., "AU 487");



Student st3 = new Student("David", .., .., "CS 124");



Student st4 = new Student("Richard", .., .., "CS 124");



Student st5 = new Student("John", .., .., "AU 487");
Student.numberOfStudentsInCourse("AU 487");
产出:2

产出:3

我希望我能向你讲清楚。

感谢您的帮助

这里有一个高层次的建议:

  • 在学生类中,创建一个静态HashMap,键是课程代码,值是注册课程的学生的计数器
  • 在Student的构造函数中,受尊重课程的增量计数
  • 在numberOfStudentsInCourse()中,返回匹配课程的计数

为了做到这一点,您的方法需要有一个参数List或类似的东西来告诉方法需要查看哪些学生对象

public static int numberOfStudentsInCourse(List<Student> students, String courseCode) {
   int count = 0;
   for(Student student : students)
      if(student.getCourseCode().equals(courseCode))
         count++;
   return count;
}
public static int numberOfStudentsInCourse(列出学生,字符串courseCode){
整数计数=0;
用于(学生:学生)
if(student.getCourseCode().equals(courseCode))
计数++;
返回计数;
}

我只是想向您展示一种java>=8方法

您可以使用以下代码创建从courseCode到使用courseCode的学生列表的映射

Map<String, Long> courseToCountMap = students.stream()
        .collect(Collectors.groupingBy(n -> n.getCourseCode(), Collectors.counting()));

courseToCountMap.entrySet().forEach(e -> System.out.println(e.getKey() + " " + e.getValue()));

我想在学生课堂上创建一个静态方法,这是你作业的一部分,还是你自己的概念?chrylis,实际上我作业的问题给出了一个特定的课程代码,只是要求计算该课程注册的学生人数,这其实很简单,我只需要一个带有couse代码名的静态变量,然后用每个构造函数递增它。但我总是喜欢与众不同,用更具创造性的方式做作业。我想指出的是,虽然您在思考替代解决方案方面做得很好,但这种方法(静态)有很多问题,通常不适用于大多数程序。特别是,几乎不可能进行测试,也不可能将不同的学生群体(例如,不同的学校)分开。相反,通常最好创建一个方法(可能是静态方法),该方法接受
集合
和课程代码。@chrylis谨慎的光学-我还不能理解这些高级概念。当然,我不能要求你们详细解释它们,因为这些概念需要解释的不仅仅是一个注释。但是让我澄清一下为什么我想把这个方法变成静态的。我只想使用类名“Student”(例如Student.numberOfStudentsInClass();)调用该方法,而不必创建一个对象来调用该方法。