簡體   English   中英

java 中的數組元素之和

[英]Sum of array elements in java

我想做數組元素的總和。 我做了這個,但我看不出我的錯誤是什么? 提前致謝。

輸入格式

第一行包含一個 integer N 表示數組的大小。 (例如 5)下一行包含用空格分隔的整數,表示數組的元素。 (例如 1000000001 1000000002 1000000003 1000000004 1000000005)

嘗試以下不同的方式

import java.io.BufferedReader;
import java.io.InputStreamReader;

//import for Scanner and other utility classes
import java.util.*;


public class TestClass {
    public static void main(String args[] ) throws Exception {
        int sumofArray = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter Size of Array :- ");
        int totalNumbers = Integer.parseInt(br.readLine());
        System.out.println("totalNumbers=> " + totalNumbers);
        int []arrayEle = new int[totalNumbers];
        System.out.println("Enter Array element :- ");
        String arrEle = br.readLine();
        System.out.println("Array Elements Are:-"+arrEle);
        String []myArray = arrEle.split(" ",totalNumbers+1);
        for(int i = 0; i < totalNumbers; i++) {
            arrayEle[i] = Integer.parseInt(myArray[i]);
            System.out.println(arrayEle[i]);
            //sumofArray = sumofArray + arrayEle[i];
            //System.out.println("i= "+i+" arrayEle[i]= "+arrayEle[i] + " sumofArray= "+sumofArray);
        }
        for(int i = 0; i < totalNumbers; i++) 
            sumofArray += arrayEle[i];
        System.out.println("Sum of Array Elements is:-  "+sumofArray);
        //Scanner s = new Scanner(System.in);
        //String name = s.nextLine();

    }
}

但無法理解,為什么我會以這個結果結束

Enter Size of Array :- 
totalNumbers=> 5
Enter Array element :- 
Array Elements Are:-1000000001 1000000002 1000000003 1000000004 1000000005
1000000001
1000000002
1000000003
1000000004
1000000005
Sum of Array Elements is:-  705032719

您的 sumofArray 變量是 int。 當您添加這 5 個數字時,integer 變量無法存儲該值。 java中int值的上限是2147483647。因此,你得到了一個意想不到的答案。 如果將 sumofArray 的數據類型更改為 long,它將起作用。

在 java 中,int、long 和 double 是原始數據類型,在 memory 中具有一定的最大長度。

整數: -2147483648 to 2147483647

您可以將其視為一個循環,當您的限制增加時,它不會引發錯誤。 如果您將 2147483647+1 添加到最大數量,它將給您 -2147483648

int a = 2147483647;
a+1; // -21474836486

對於每種原始數據類型都是如此,因此您必須始終尋找每種數據類型的最大值。

暫無
暫無

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

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