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

Java 如果数组未满,请在末尾添加一个值,java,arrays,loops,Java,Arrays,Loops,因此,我正在编写一些代码,假设这些代码检查我所有的数组插槽是否已满,如果没有,则将我的新等级添加到数组中的下一个插槽,并返回true,如果已满,则返回false 我不知道如何检查我的数组(等级)是否已满。。我有类似的东西,但不太确定它是否正确 问题是出于某种原因,它似乎只是增加了一个等级。这也影响了我的成绩,这是生产?作为一个我从未见过的数字 public boolean addGrade(int newGrade) { for (int i = 0; i < grades.len

因此,我正在编写一些代码,假设这些代码检查我所有的数组插槽是否已满,如果没有,则将我的新等级添加到数组中的下一个插槽,并返回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 boolean addGrade(int newGrade){
对于(int i=0;i
score方法(它所要做的就是计算并返回分数:score total/totalGrades)

public double computeScore(){
双倍合计=0;
对于(int i=0;i
因为您要维护一个计数器变量
numGrades
,所以直接使用它在所需位置插入一个新项目

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

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

if(numGrades
那么

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;
}
public double computeScore(){
双倍合计=0;
如果(numGrades==0){
返回总数;
}
如果(numGrades>坡度.长度){
numGrades=等级。长度;
}
对于(int i=0;i
您甚至可以通过增加数组括号内的值来收紧tad:

public boolean addGrade(int newGrade) {

      if (numGrades < grades.length) {
        grades[numGrades++] = newGrade;
        return true;
      }
      return false;
}
public boolean addGrade(int newGrade){
if(numGrades<等级长度){
等级[numGrades++]=新等级;
返回true;
}
返回false;
}

当您进行总计时,因此使用
0
作为默认值,而不是
-1
什么类型是
分数
?int[]分数,并且希望保持它为该类型,而不是整数,因为某种原因我的分数一直在产生“?”这对我来说真的很奇怪me@dave已编辑。大概
totalGrades
为0。而且,我认为您不需要它。要么
totalGrades
要么
numGrades
-不是两者都有。如果(newGrade@ElliottFrisch显然,这是错误的。
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;
}
public boolean addGrade(int newGrade) {

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