Range Accumulator


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Authors:
Problem type
Allowed languages
Java 19, Java 8

這個程式允許使用者輸入一個整數n,和n個整數,最後輸入兩個整數,分別代表起始點start,以及終止點end。 若使用者輸入的start大於end,就在程式內部默默幫使用者交換start和end。

輸入完成之後,程式會將n個整數視為一個陣列,並計算起始點到終止點之間的總和,計算時不包含位於終止點的整數。

這個程式目前仍缺少getSumInRange函數的實作,請完成它,並且上傳完整的程式。 除了getSumInRange函數之外,請勿修改其他已經寫好的部分,違反此規則者,無論自動評測結果為何,在考試中均不計分。但允許輕微的排版差異。

程式完成之後,可用以下測試資料做初步的測試,但仍請自行設計完整的測試資料

輸入 #1:

5 1 2 3 4 5 0 3

輸出 #1:

6 (因為array[0] + array[1] + array[2] = 1 + 2 +3 = 6,注意不包含終止點array[3])

輸入 #2:

5 1 2 3 4 5 4 5

輸出 #2:

5 (因為array[4]等於5,注意不包含終止點array[5])

輸入 #3:

4 7 8 9 10 3 1

輸出 #3:

17 (因為start = 3大於end = 1,因此交換成為start = 1 end = 3,array[1] + array[2] = 8 + 9 = 17,注意不包含終止點array[3])

import java.util.Scanner;

public class RangeAccumulator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 讀取整數 n,表示陣列的長度,接下來有 n 個整數
        int n = scanner.nextInt();
        // 創建一個整數陣列,大小為 n
        int[] array = new int[n];

        // 接著讀取 n 個整數,並將它們存儲在 array 陣列中
        for (int i = 0; i < n; i++) {
            array[i] = scanner.nextInt();
        }

        // 讀取兩個整數,表示範圍的起始和結束位置
        int start = scanner.nextInt();
        int end = scanner.nextInt();

        // 計算 array 陣列中指定範圍內的整數和,第一個參數是整數陣列,第二個參數是起始位置,第三個參數是結束位置
        // 返回值是一個整數,表示指定範圍內的整數和
        // 例如,如果 array = [1, 2, 3, 4, 5],start = 1,end = 4,則返回值是 9,因為 2 + 3 + 4 = 9
        // 注意:計算時不包括結束位置的整數
        int result = getSumInRange(array, start, end);

        System.out.println(result);

        scanner.close();
    }

    // 這個函數計算 array 陣列中指定範圍內的整數和,第一個參數是整數陣列,第二個參數是起始位置,第三個參數是結束位置
    // 返回值是一個整數,表示指定範圍內的整數和
    // 例如,如果 array = [1, 2, 3, 4, 5],start = 1,end = 4,則返回值是 9,因為 2 + 3 + 4 = 9
    // 注意:計算時不包括結束位置的整數
    public static ... getSumInRange(...) {
        ...
    }
}

Comments

There are no comments at the moment.