java - 我不明白为什么总和= 0?
问题描述
我正在 Udemy 学习 Java 课程。我们有一个挑战问题,我理解大部分代码,但不是这个: sum= 0;
我在 Udemy 上问过老师,但没有答案。
所以挑战来了:编写一个名为 isOdd 的方法,带有一个 int 参数并将其命名为 number。该方法需要返回一个布尔值。检查数字是否 > 0,如果不是则返回 false。编写第二个名为 sumOdd 的方法,它有 2 个 int 参数:start 和 end,它们代表一个数字范围。该方法应使用 for 循环对该范围内的所有奇数求和,包括“结束”并返回总和。该方法称为 isOdd 以检查每个数字是否为奇数。参数 end 必须大于等于 start 且 start 和 end 参数都必须大于 0。
如果不满足这些方法,则返回 -1。
在 udemy 的挑战中,如果我不输入 sum = 0 即: sum = 10 它会给出错误。我不明白为什么总和= 0?
class SumOddRange {
public static void main(String[] args) {
sumOdd(15, 13);
isOdd(10);
}
public static boolean isOdd(int number) {
if (number < 0) {
return false;
} else if (number % 2 != 0) {
return true;
} else {
return false;
}
}
public static int sumOdd(int start, int end) {
if((end < start) || (start <= 0)) {
return -1;}
int sum = 0;
for (int i = start; i <= end; i++) {
if (isOdd(i)) {
sum += i;
}
}
return sum;
}
}
解决方案
在
int sum = 0;
该= 0
部分是变量的初始化sum
。也就是说,它指定了变量的初始值,几乎就像你写的一样
int sum;
sum = 0;
局部变量在首次赋值之前没有定义的值(并且您可能不会使用它们的值),因此有必要通过这两种形式之一提供初始值。
至于为什么必须专门将该变量初始化为 0,那是因为它是使其余方法实现按要求工作的正确值。如果你以不同的方式初始化它,那么该方法将为相同的参数返回不同的值。
从语义上讲,sum
记录到目前为止处理的奇数的运行总和,在你处理任何之前,到目前为止处理的那些总和确实应该为零。这甚至可能是您的方法的最终返回值,例如当您调用SumOddRange.sumOdd(2,2)
.
注意:不要将赋值运算符 ,=
与相等测试运算符. 混淆==
。
推荐阅读
- r - R - S3 方法 - 绘图
- javascript - 在js中使用变量进行计算时无法得到正确的结果
- bash - bash 中的复杂条件,其中正在评估可执行文件的返回值
- javascript - 如何选择 Javascript 对象中“计数”最低的值
- sql - 基于关联的 Rails 顺序无法正常工作
- unity3d - 物体旋转的Unity3d问题
- c++ - 在 Windows 64 位中静态编译 Paho MQTT 的问题
- python - 知道 sqlalchemy 过滤器何时发现某些东西
- python - 当我输入一个存储对象的变量时,它会不断返回该对象的实例,而不是我希望它返回的列表
- javascript - AngularJS - 数据未在“数据类”属性上呈现