从2D阵列中删除

时间:2014-10-27 16:37:32

标签: java arrays

我正在创建一个接受等级(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; 
}

1 个答案:

答案 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的场景。