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