題目描述
給定一個大小為N的整數陣列,您需要計算其中所有元素數量的總和。要特別注意的是,數值可能會很大!
一個32位元的整數(int)可以表示的數值範圍介於-231到231-1(包含-231和231-1)。在計算總和的過程中,數值可能會超過32位元整數所能表示的範圍。
原題網址
輸入格式
第一行包含一個整數N,範圍在1到10(包含1和10)之間,接下來的一行有N個整數,範圍在0到1010(包含0和1010),使用空格進行分隔,每個整數分別表示陣列的一個元素。
輸出格式
輸出陣列中所有元素相加的結果。
範例輸入
5
1000000001 1000000002 1000000003 1000000004 1000000005
1000000001 1000000002 1000000003 1000000004 1000000005
範例輸出
5000000015
額外解釋
1000000001 + 1000000002 + 1000000003 + 1000000004 + 1000000005 = 5000000015
解題概念
先從標準輸入中讀取陣列的長度和陣列的元素,建立出整數陣列物件,接著再使用Java 8提供的串流(Stream)功能,把陣列轉成串流物件後,再使用「asLongStream」方法轉成長整數的串流,接著使用「sum」方法來計算總和。
參考答案
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static void main(final String[] args) throws Exception {
final Scanner sc = new Scanner(System.in);
final int n = sc.nextInt();
final int[] array = new int[n];
for (int i = 0; i < n; ++i) {
array[i] = sc.nextInt();
}
System.out.println(Arrays.stream(array).asLongStream().sum());
}
}