我有一个简单的sumOf方法来计算几何系列的总和:
public int sumOf(int terms) {
for(int i = 0; i < terms; i++){
sum += getNextTerm();
}
int b = sum;
sum = 0;
return b;
}
求和工作正常,但正如你所看到的那样,我试图在返回之前将sum变量重置为零,但是以相当愚蠢的方式。我正在创建一个新的int并将总和存储在那里,然后重置。
有没有更好的方法来解决这个问题?
答案 0 :(得分:2)
我只想使用一个局部变量。
public int sumOf(int terms) {
int sum = 0;
for(int i = 0; i < terms; i++){
sum += getNextTerm();
}
return sum;
}
在这种情况下使用字段没什么意义,如果方法根本不改变它。
答案 1 :(得分:1)
您可以使用resetSum()
方法重置变量sum
,如下所示:
private void resetSum() {
this.sum = 0;
}
接下来,您可以使用try-finally
语句,如下所示:
public int sumOf(int terms) {
try {
for (int i = 0; i < terms; i++) {
sum += getNextTerm();
}
return sum;
} finally {
resetSum();
}
}
答案 2 :(得分:1)
您可以将sum
声明为本地变量,以消除重置它的需要。您也可以直接返回sum
,而无需使用其他中间变量b
。
public int sumOf(int terms) {
int sum = 0;
for(int i = 0; i < terms; i++){
sum += getNextTerm();
}
return sum;
}
答案 3 :(得分:1)
将sum作为局部变量,然后您不需要重置它。
public int sumOf(int terms) {
int sum = 0;
for(int i = 0; i < terms; i++){
sum += getNextTerm();
}
return sum;
}
答案 4 :(得分:1)
只需使用局部变量即可保留总和。
public int sumOf(int terms) {
int sum = 0;
for (int i = 0; i < terms; i++) {
sum += getNextTerm();
}
return sum;
}
顺便说一句,如果你碰巧使用的是Java 8,你可以使用FP惯用语。
public int sumOf(int terms) {
return IntStream.generate(this::getNextTerm)
.limit(terms)
.sum();
}