运行 getGrades() 方法时,它不断返回 B+。我不知道出了什么问题,我需要帮助。我会分享代码
try {
Scanner input = new Scanner(new FileInputStream(new File("src//inheritance//course.txt")));
for(int i=0;i<=4;i++){
courseCode[i] = input.nextLine();
courseName[i] = input.nextLine();
session[i] = input.nextLine();
semester[i] = input.nextLine();
mark[i] = input.nextLine();
actualMark[i]=Integer.parseInt(mark[i]);
}
} catch (FileNotFoundException ex){
System.out.println("File not found");
}
}
public String getGrade() {
for (int i = 0; i <= 4; ++i) {
if (actualMark[i] >= 85) {
return "A";
} else if (actualMark[i] >= 75) {
return "A-";
} else if (actualMark[i] >= 70) {
return "B+";
} else if (actualMark[i] >= 65) {
return "B";
} else if (actualMark[i] >= 60) {
return "B-";
} else if (actualMark[i] >= 55) {
return "C+";
} else if (actualMark[i] >= 50) {
return "C";
} else if (actualMark[i] >= 45) {
return "D";
} else if (actualMark[i] >= 35) {
return "E";
} else if (actualMark[i] < 35) {
return "F";
}
}
return null;
}
}
class Tester3{
public static void main(String[] args) {
PersonProfile a = new PersonProfile("Theshue", "Male", "11/12/2003");
Student b = new Student("Raju","Male", "11/12/2003");
System.out.println(b.toString2());
for(int i=0;i<=4;i++){
System.out.println("The course code is "+ b.courseCode[i]);
System.out.println("The course name is "+ b.courseName[i]);
System.out.println("The session is "+ b.session[i]);
System.out.println("The semester is "+ b.semester[i]);
System.out.println("The mark is "+ b.actualMark[i]);
System.out.println("The grade is " + b.getGrade());
}
}
}
输出= 名字叫拉朱 性别为男 日期是 2003 年 12 月 11 日 课程代码是WMES1105 课程名称:信息系统原理 会议时间为2009年 学期是1 分数是74 等级为B+ 课程代码是WXES1109 课程名称:系统与计算机组织 会议时间为2009年 学期是1 分数是60 等级为B+ 课程代码是WXES1112 课程名称:计算数学1 会议时间为2009年 学期是2 分数是82 等级为B+ 课程代码是WXES1114 课程名称:编程I 会议时间为2009年 学期是2 分数是52 等级为B+ 课程代码是GXEX1411 课程名称:民族关系 会议时间为2009年 学期是2 分数是43 等级为B+
问题是,当情况并非如此时,所有人的成绩都是b+。在输出中,对于 getGrades() 部分,我需要它显示每个标记的成绩,而不是仅显示 B+。我似乎无法解决这个问题。我尝试过使用chatgpt,但经过无数次尝试后,我觉得这段代码需要人性化的保存。需要帮助调试这个,谢谢
getGrade() 当前有一个循环(这是错误的) - 你想传入实际分数 [i] 并根据它计算出字符串。
public String getGrade(int grade) {
if (grade >= 85) {
return "A";
else if (grade >= 75) {
return "A-";
}
....
并更改调用代码传入
actualMark[i]
您的代码的问题是您的 getGrade 方法始终根据actualMark 数组中的第一个分数返回成绩,并且不考虑其他分数。这是因为循环内有一个 return 语句,它退出循环并根据它遇到的第一个标记返回成绩。
要以另一种方式解决此问题,您可以迭代所有标记,计算每个标记的成绩,并将成绩存储在数组中。然后,您可以返回成绩数组或根据需要使用它。
public String[] getGrades() {
String[] grades = new String[5]; // Assuming you have 5 marks
for (int i = 0; i < 5; ++i) {
if (actualMark[i] >= 85) {
grades[i] = "A";
} else if (actualMark[i] >= 75) {
grades[i] = "A-";
} else if (actualMark[i] >= 70) {
grades[i] = "B+";
} else if (actualMark[i] >= 65) {
grades[i] = "B";
} else if (actualMark[i] >= 60) {
grades[i] = "B-";
} else if (actualMark[i] >= 55) {
grades[i] = "C+";
} else if (actualMark[i] >= 50) {
grades[i] = "C";
} else if (actualMark[i] >= 45) {
grades[i] = "D";
} else if (actualMark[i] >= 35) {
grades[i] = "E";
} else if (actualMark[i] < 35) {
grades[i] = "F";
}
}
return grades;
}
对于你的主要:
for(int i = 0; i < 5; i++){
System.out.println("The course code is " + b.courseCode[i]);
System.out.println("The course name is " + b.courseName[i]);
System.out.println("The session is " + b.session[i]);
System.out.println("The semester is " + b.semester[i]);
System.out.println("The mark is " + b.actualMark[i]);
System.out.println("The grade is " + b.getGrades()[i]);
}