首页 > 解决方案 > 我不明白为什么总和= 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;
    }

}

标签: java

解决方案


int sum = 0;

= 0部分是变量的初始化sum。也就是说,它指定了变量的初始值,几乎就像你写的一样

int sum;
sum = 0;

局部变量在首次赋值之前没有定义的值(并且您可能不会使用它们的值),因此有必要通过这两种形式之一提供初始值。

至于为什么必须专门将该变量初始化为 0,那是因为它是使其余方法实现按要求工作的正确值。如果你以不同的方式初始化它,那么该方法将为相同的参数返回不同的值。

从语义上讲,sum记录到目前为止处理的奇数的运行总和,在你处理任何之前,到目前为止处理的那些总和确实应该为零。这甚至可能是您的方法的最终返回值,例如当您调用SumOddRange.sumOdd(2,2).

注意:不要将赋值运算符 ,=与相等测试运算符. 混淆==


推荐阅读