如果数组未满,请在末尾添加值

时间:2014-07-29 03:54:37

标签: java arrays loops

所以我正在编写一些代码,假设检查我的所有数组插槽是否已满,如果没有将新等级添加到数组中的下一个插槽并返回true,如果它已满,则返回false。

我很困惑如何检查我的阵列(等级)是否已满..我有类似的东西,但不太确定它是否正确。

出于某种原因,问题似乎只是增加了一个等级。这也影响了我的分数?作为一个我从未见过的数字。

public boolean addGrade(int newGrade) {
    for (int i = 0; i < grades.length; i++) {
        if (grades[i] == -1)//or should i use 0 {
            grades[i] = newGrade;
            numGrades++;
            return true;
        }
    }
    return false;
}

得分方法(所有假设都是计算并返回得分:得分总数/总得分)

public double computeScore() {
    double total = 0;
    for (int i = 0; i < grades.length; i++) {
        total += grades[i];
    }
    return total / totalGrades;
}

3 个答案:

答案 0 :(得分:1)

因为你正在维护一个计数器变量numGrades,所以直接用它来在所需的位置插入一个新项目。

public boolean addGrade(int newGrade) {
    if(newGrades<grades.length){
        grades[numGrades] = newGrade;
        numGrades++;
        return true;
    }
    return false;
}

注意: 数组中的每个值默认为零。

答案 1 :(得分:1)

你甚至可以通过增加数组括号内部来收紧一点:

public boolean addGrade(int newGrade) {

      if (numGrades < grades.length) {
        grades[numGrades++] = newGrade;
        return true;
      }
      return false;
}

答案 2 :(得分:0)

没有。你不应该做你正在做的事情。您有numGrades,我认为您应该使用它来跟踪addGrade()中的正确位置!

if (numGrades < grades.length) {
  grades[numGrades] = newGrade;
  numGrades++;
  return true;
}
return false;

然后

public double computeScore() {
  double total = 0;
  if (numGrades == 0) {
    return total;
  }
  if (numGrades > grades.length) {
    numGrades = grades.length;
  }
  for (int i = 0; i < numGrades; i++) {
    total += grades[i];
  }
  return total / numGrades;
}