我正在创建一个接受等级(a100,q68等)的方法,从2D数组中移除该等级,并调整数组的大小。等级的第一个字母确定等级所在的行,其余为等级。如果等级被删除,则该方法返回true,否则返回false。到目前为止,这是我的代码。我知道我错过了什么,但我不确定它是什么。
public boolean deleteGrade(String newGradeIn) {
char row = newGradeIn.charAt(0);
double grade = Double.parseDouble(newGradeIn.substring(1));
int index = categoryRow(row);
if (index == -1) {
return false;
}
double[] oldArr = gradeTable[index];
double[] newArr = Arrays.copyOf(oldArr, oldArr.length - 1);
newArr[newArr.length + 1] = grade;
gradeTable[index] = newArr;
return true;
}
答案 0 :(得分:0)
从阵列中删除的逻辑是不对的。 替换以下代码
double[] oldArr = gradeTable[index];
double[] newArr = Arrays.copyOf(oldArr, oldArr.length - 1);
newArr[newArr.length + 1] = grade;
gradeTable[index] = newArr;
以下一个
double[] oldArr = gradeTable[index];
double[] newArr = new double[oldArr.length - 1];
int i = 0;
for (double element : oldArr)
{
if (element != grade)
{
newArr[i++] = element;
}
}
gradeTable[index] = newArr;
在这里,我们将遍历所有元素以找到实际成绩并将其删除。 注意:不考虑给定gradeIn的场景。