gpt4 book ai didi

java - 我怎样才能找到平均分最高的学生的名字? java

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:34 25 4
gpt4 key购买 nike

我有一个简单的java项目。该项目是一个为教师编写的程序,他想要输入学生的成绩(每个学生三个成绩),具有五个私有(private)属性 namegrade1grade2grade3average 以及三个方法:readGrades()GetAverage() 和 getName()。我但是他们所有人,但我的问题是,无论我做什么,输出总是给我我输入的最新学生的平均值,而不是最高的。我还应该打印他的名字而不是平均值。有人告诉我使用 ArrayList 但说实话我不知道怎么做?所以如果有人能帮助我,我将不胜感激。这就是我到目前为止所拥有的

import java.util.Scanner;

class Student {
private String name;
private int grade1, grade2, grade3;
private double average;

void Setgrade1(int g1) {
grade1 = g1;
}

void Setgrade2(int g2) {
grade2 = g2;
}

void Setgrade3(int g3) {
grade3 = g3;
}

int Getgrade1() {
return grade1;
}

int Getgrade2() {
return grade2;
}

int Getgrade3() {
return grade3;
}

int readGrades() { //method that reads grades.
Scanner input = new Scanner(System.in);
int g1, g2, g3;
String name;
char choice;
do {
System.out.println(" --Please enter the student name: ");
name = input.next();
SetName(name);
System.out.println(" --Please enter the first grade: ");
g1 = input.nextInt();
Setgrade1(g1);

System.out.println(" --Please enter the the second grade: ");
g2 = input.nextInt();
Setgrade2(g2);
System.out.println(" --Please enter the the third grade: ");
g3 = input.nextInt();
Setgrade3(g3);
System.out.println(" Do you want to continue? enter the number ");
System.out.println(" 1- YES 2- NO ");
choice = input.next().charAt(0);
}
while (choice != '2');
return choice;
}

void SetAverage(double avr) {
average = avr;
}

double GetAverage() {
average = (grade1 + grade2 + grade3) / 3;
return average;
}

void SetName(String name1) {
name = name1;
}

String getName() {
return name;
}
}

public class TestStudent1 {
public static void main(String args[]) {
Student student = new Student();
student.readGrades();
student.GetAverage();
double i = 0;
double average = student.GetAverage();
if (i < average) {
i = average;

System.out.println("THE HIGHEST AVG :" + i);
}
}
}

最佳答案

您的代码中存在以下几个问题:

1)它为您提供最新学生的输出是因为您一直在修改单个对象,因为您输入更多成绩和姓名的逻辑位于学生本身内部,而应该在学生本身内部。

2) 要获取名称而不是平均值,您应该在打印时调用 getName。

3) 要处理多个学生,您可以在 main 方法中去掉询问您想继续的逻辑,并在 main 方法中创建学生的 ArrayList 来处理多个学生对象,或者您也可以使用其他集合来执行此操作,如

List<Student> students = new ArrayList<>();

从这里循环并使用 students.add(studentObj) 将学生对象添加到列表中。

然后使用 getAverage 比较学生对象的平均数,并从列表中找到平均数最高的学生并打印出来,以获得最高的学生对象的平均数。

这样就可以了。尝试其中一些,如果您遇到困难,请告诉我们。

关于java - 我怎样才能找到平均分最高的学生的名字? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com