Java 使用另一个方法中的字符数组来计算发生率-字符可以';不能转换为字符[]-
请客气一点,因为我对Java(以及一般编程)非常陌生 我正在尝试编写一个计算分数出现次数的方法,我想我已经找到了答案,但是我正在尝试测试它(我正在测试页面),我得到了错误“char不能转换为char[]” 具有等级(getGrades)的方法,根据等级(分数)级别将int转换为char 我确信这个解决方案很简单,但我似乎不知道我做错了什么,或者我需要包括什么或者去掉什么来测试它Java 使用另一个方法中的字符数组来计算发生率-字符可以';不能转换为字符[]-,java,arrays,char,Java,Arrays,Char,请客气一点,因为我对Java(以及一般编程)非常陌生 我正在尝试编写一个计算分数出现次数的方法,我想我已经找到了答案,但是我正在尝试测试它(我正在测试页面),我得到了错误“char不能转换为char[]” 具有等级(getGrades)的方法,根据等级(分数)级别将int转换为char 我确信这个解决方案很简单,但我似乎不知道我做错了什么,或者我需要包括什么或者去掉什么来测试它 public class ProcessMarks { Marks testMarks = new Marks
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);
}
}
公共类进程标记{
标记testMarks=新标记();
int[]marks=testMarks.getMarks();
//方法基于标记数组创建新的等级数组
公共静态字符getGrades(整数标记[]){
INTA=90;
int b=75;
int c=60;
int d=50;
int e=45;
字符[]等级=新字符[marks.length];
char gradedMarks=等级[0]
//否则就是失败!
for(int i=0;i=a)
等级[i]=“A”;
else if(标记[i]>=b&&marks[i]=c&&marks[i]=d&&marks[i]=e&&marks[i]
在您的测试页面中
classvoid main
方法中,您正在执行以下操作:
char[] grade = ProcessMarks.getGrades(marks);
这意味着您希望返回一个char[]
,但方法getGrades
仅返回一个char
,如下所示:
public static char getGrades(int marks[]) { }
方法将返回什么样的数据类型您需要捕获完全相同的数据类型中的响应
如果执行以下操作,您的错误[char无法转换为char[]]如下:
但我也能从你的方法中看到许多其他的缺陷
示例:与getGrades()类似,getGrades()返回gradedMarks,该标记除了声明点之外从未填充过。它将始终返回相同的值。在主方法中:
char[] grade = ProcessMarks.getGrades(marks);
getGrades()
返回char
,但将其分配给char数组char[]
,该数组不兼容,甚至不能隐式强制转换
通常,请记住,类型
T
和类型T[]
是完全不同的类型。Jandie,正如脱机讨论的那样-您需要将类型定义为数组。以上答案应被接受,因为它们是现场的
publicstaticchargetgrades(int-marks[]){
变成
publicstaticchar[]getGrades(int-marks[]){
调用getGrades()时需要char[]
返回类型
第一次。您将从指定的被调用方法中返回一个char
。这就是您的类型不匹配的地方。您确定不想在getGrades()中返回grades
而不是gradesmarks
(实际上从未更改过)
method?我猜这就是我要做的,但是我刚刚将返回值指定为0,因为我不知道如何返回数组等级[]。当我在main方法中打印getGrades时,它会工作,并且会打印grades数组,而不是return语句中的0值。我刚刚将其更新为。char gradedMarks=grades[0];谢谢你花时间来帮助我!也许我应该说得更具体一点。我正在尝试测试gradeDistn的int distribution=ProcessMarks.gradesDistn(grade);但是我需要使用我在gradeDistn的getGrades中创建的数组。哦,我还对需要返回的内容感到有点困惑,您的评论已经注意到了这一点。我必须有一个return语句来允许该方法正常工作,但是在getGrades中
char[] grade = ProcessMarks.getGrades(marks);