我正在尝试编写一个名为marksToGrades的静态方法,该方法将一个介于1到100之间的标记(双精度)数组作为参数,并返回一个包含相应等级的String数组。
public static String[] marksToGrades(double[] array){
double[] grades;
for (int i = 0; i < array.length; i++){
if (array[i] >= 80 && array[i] <= 100)
array[i] = "A";
else if (array[i] >= 65 && array[i] < 80)
array[i] = "B";
else if (array[i] >= 50 && array[i] < 65)
array[i] = "C";
else if (array[i] >= 0 && array[i] < 50)
array[i] = "D";
else array[i] = "Invalid";
}
return grades;
}
这是我遇到的以下错误,但不确定如何解决。
任何帮助将不胜感激。谢谢。
更新
public static String[] marksToGrades(double[] array){
String[] grades;
for (int i = 0; i < array.length; i++){
if (array[i] >= 80 && array[i] <= 100)
grades[i] = "A";
else if (array[i] >= 65 && array[i] < 80)
grades[i] = "B";
else if (array[i] >= 50 && array[i] < 65)
grades[i] = "C";
else if (array[i] >= 0 && array[i] < 50)
grades[i] = "D";
else grades[i] = "Invalid";
}
return grades;
}
答案 0 :(得分:2)
array
被定义为double[] array
,这意味着它是一个双精度值数组。
使用array[i] = "A";
,您将String
分配给double
值的数组,这是不兼容的。简而言之,您不能将一个单词分配给十进制数字数组。
要解决此问题,请使用已经定义的String[] grades
:
grades[i] = "A";
此外,您需要使用与输入数组相同的长度来初始化数组。
String[] grades = new String[array.length];
答案 1 :(得分:2)
由于类型不兼容,您会收到此错误。
您需要创建一个String[] grades;
作为返回类型:
String[] grades = new String[array.length];
像这样为grades
分配分数:
grades[i] = "A";
答案 2 :(得分:0)
错误很简单。您正在创建一个数组,而没有对其进行初始化。我的意思是: 字符串[]等级; 手段 字符串[] grades = null;
,然后,您尝试访问空数组的索引i。您需要先使用大小初始化数组,例如: String []等级=新的String [array.length];