所以我正在编写一些代码,假设检查我的所有数组插槽是否已满,如果没有将新等级添加到数组中的下一个插槽并返回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;
}
答案 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;
}