从二维数组中删除
问题描述:
我创建了一个方法,该方法需要一个等级(a100,q68等),从二维数组中删除该等级并调整数组大小。等级的第一个字母决定了等级所在的行,其余是等级。如果等级被删除,则该方法返回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;
}
答
你从数组中移除的逻辑是不正确的。 替换下面的代码
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不存在的情景。
你的实际问题是什么? – ifloop 2014-10-27 16:41:46
我想我会抛弃一些实际删除评分的东西。 – me123 2014-10-27 16:42:45
你认为你遗漏了它或者你是代码实际上在删除一个项目失败?你应该阅读[如何提出一个好问题] – ifloop 2014-10-27 16:45:08