编写静态方法以求成绩

时间:2018-08-05 11:25:06

标签: java arrays

我正在尝试编写一个名为marksToGrades的静态方法,该方法将一个介于1到100之间的标记(双精度)数组作为参数,并返回一个包含相应等级的String数组。

enter image description here

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;
}

这是我遇到的以下错误,但不确定如何解决。

enter image description here

任何帮助将不胜感激。谢谢。

更新

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;
}

enter image description here

3 个答案:

答案 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];