java 中数组元素的总和
Sum of array elements in java
我想对数组元素求和。我做了这个,但我看不出我的错误是什么?
提前致谢。
输入格式
第一行包含一个整数N,表示数组的大小。 (例如 5)
下一行包含 space 分隔的整数,表示数组的元素。 (例如 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 个数字时,整数变量无法存储该值。 java 中 int 值的上限是 2147483647。因此,您得到了意想不到的答案。如果把sumofArray的数据类型改成long,就可以了。
在java中,int、long和double是原始数据类型,在内存中有一些最大长度。
整数:-2147483648 to 2147483647
你可以把它想象成一个循环,当你的限制增加时它不会抛出错误。
如果你将 2147483647+1 添加到最大数量,它会给你 -2147483648
int a = 2147483647;
a+1; // -21474836486
对于每种原始数据类型都是如此,因此您必须始终寻找每种数据类型的最大值。
我想对数组元素求和。我做了这个,但我看不出我的错误是什么? 提前致谢。
输入格式
第一行包含一个整数N,表示数组的大小。 (例如 5) 下一行包含 space 分隔的整数,表示数组的元素。 (例如 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 个数字时,整数变量无法存储该值。 java 中 int 值的上限是 2147483647。因此,您得到了意想不到的答案。如果把sumofArray的数据类型改成long,就可以了。
在java中,int、long和double是原始数据类型,在内存中有一些最大长度。
整数:-2147483648 to 2147483647
你可以把它想象成一个循环,当你的限制增加时它不会抛出错误。 如果你将 2147483647+1 添加到最大数量,它会给你 -2147483648
int a = 2147483647;
a+1; // -21474836486
对于每种原始数据类型都是如此,因此您必须始终寻找每种数据类型的最大值。