【发布时间】:2025-11-28 02:00:02
【问题描述】:
请善待我,因为我对 Java(以及一般编程)非常陌生。
我正在尝试编写一种计算成绩出现的方法,我想我已经弄清楚了,但是我在尝试测试它时失去了理智(i TestingPage)我收到错误'char can't转换为 char[]' 带有成绩的方法(getGrades),根据成绩(marks)的高低将int转换为char。
我确定解决方案很简单,但我似乎无法弄清楚我做错了什么,或者我需要包含或取出什么来测试它。
public class ProcessMarks {
Marks testMarks = new Marks();
int[] marks = testMarks.getMarks();
//Method to create a new array of grades based on marks array
public static char getGrades(int marks[]){
int a = 90;
int b = 75;
int c = 60;
int d = 50;
int e = 45;
char[] grades = new char [marks.length];
char gradedMarks = grades[0]
//else is F for fail!
for (int i = 0; i < marks.length; i++){
if (marks[i] >= a)
grades[i] = 'A';
else if (marks[i] >= b && marks[i] < a)
grades[i] = 'B';
else if (marks[i] >= c && marks[i] < b)
grades[i] = 'C';
else if (marks[i] >= d && marks[i] < c)
grades[i] = 'D';
else if (marks[i] >= e && marks[i] < d)
grades[i] = 'B';
else
grades[i] = 'F';
}
for (int n = 0; n < grades.length; n++) {
System.out.print(grades[n] + " ");
if (n % 10 == 9)
System.out.println();
}
return gradedMarks;
}
//Method to establish total occurrences of each grade
public static char gradesDistn (char getGrades[]){
char[] grades = getGrades;
char gradesDistn = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
for (int i = 0; i < grades.length; i++){
if (grades[i] == 'A')
a++;
else if (grades[i] == 'B')
b++;
else if (grades[i] == 'C')
c++;
else if (grades[i] == 'C')
c++;
else if (grades[i] == 'D')
d++;
else if (grades[i] == 'E')
e++;
else
f++;
}
System.out.println("A: " + a);
System.out.println("B: " + b);
System.out.println("C: " + c);
System.out.println("D: " + d);
System.out.println("E: " + e);
System.out.println("F: " + f);
return gradesDistn;
}
}
public class TestingPage {
public static void main(String[] args) {
int[] marks = Marks.getMarks();
char[] grade = ProcessMarks.getGrades(marks); // char cannot be converted to char[]
int median = ProcessMarks.getMedian(marks);
int min = ProcessMarks.getMin(marks);
int range = ProcessMarks.getRange(marks);
int mean = ProcessMarks.getMean(marks);
int mode = ProcessMarks.getMode(marks);
char grades = ProcessMarks.getGrades(marks);
int distribution = ProcessMarks.gradesDistn(grade);
System.out.println(range);
}
}
【问题讨论】:
-
第一次调用
getGrades()时,您期望返回类型为char[]。您将获得从您指定的被调用方法返回的char。那就是您的类型不匹配的地方。您确定不想在您的getGrades()方法中返回grades而不是gradedMarks(实际上从未更改过)吗? -
我猜这就是我想要做的,但是我刚刚将返回值分配为 0,因为我不知道如何返回数组 Grades[]。当我在 main 方法中打印 getGrades 时,它会起作用并且打印等级数组,而不是返回语句的 0 值。我刚刚更新到这个。 chargradedMarks = 成绩[0];