簡體   English   中英

我不明白為什么sum = 0?

[英]I don't understand the why is sum = 0?

我正在Udemy學習Java課程。 我們有一個挑戰性的問題,我理解大多數代碼,但不是這樣:sum = 0;

我已經問過有關Udemy的老師,但沒有答案。

所以這是挑戰:寫一個帶有int參數的isOdd方法,並將其命名為number。 該方法需要返回一個布爾值。 如果沒有返回false,請檢查該數字是否大於0。 編寫另一個名為sumOdd的方法,該方法具有2個int參數:start和end,叉號代表一定范圍的數字。 該方法應使用for循環來求和該范圍內的所有奇數,包括“ end”,然后返回總和。 該方法稱為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)

注意:請勿將賦值運算符=與相等測試運算符==混淆。

對一系列數字求和時,必須首先使用標識值0初始化和。

所以

int sum = 0;

sum = sum + 10; // now sum is 10
sum = sum + 20; // now sum is 30

如果您使用的是一系列數字的乘積,則會將prod初始化為1。

int prod = 1;
prod = prod * 5; // now prod is 5
prod = prod * 7; // now prod is 35 

請注意,您需要分配一個值以接受總和。 所以

int sum = sumOdd(15,13);

應該返回-1,因為13 <15,這是您的方法中的錯誤。

您必須創建變量sum,使其從0開始。這就像您在計算大理石或其他東西一樣。 在計數開始時沒有人說過0,因為很明顯您將從0開始。但是,計算機不知道該值,因此您必須在循環開始時告訴它當前總和為0。然后,您可以使用循環並在計數時加和。

如果您不說sum為0,那么在循環中說“ sum + = i”時,您將得到一個錯誤,因為計算機不知道以什么開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM