如何像Java中的int[]一样初始化BigInteger数组?

如何像Java中的int[]一样初始化BigInteger数组?,java,arrays,nullpointerexception,biginteger,Java,Arrays,Nullpointerexception,Biginteger,在以下代码中,我无法初始化BigInteger数组,因为编译时会引发NullPointerException: public class Solution { public static BigInteger[] arr; public Solution(int n){ arr=new BigInteger[n]; for(BigInteger each:arr){ each=BigInteger.ZERO; } } public static BigIn

在以下代码中,我无法初始化BigInteger数组,因为编译时会引发NullPointerException:

public class Solution {
public static BigInteger[] arr;
public Solution(int n){
    arr=new BigInteger[n];
    for(BigInteger each:arr){
        each=BigInteger.ZERO;
    }
}
public static BigInteger maxlist(){
    BigInteger max=arr[0];
    for(BigInteger elem:arr)
        if(elem.compareTo(max)>0)
            max=elem;
    return max;
}
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int m = in.nextInt();
    Solution s=new Solution(n);
    for(int a0 = 0; a0 < m; a0++){
        int a = in.nextInt();
        int b = in.nextInt();
        BigInteger k = in.nextBigInteger();
        for(int i=a-1;i<=b-1;i++)
        arr[i]=arr[i].add(k);   //Error is thrown here
    }
    System.out.println(maxlist());
    in.close();
}
公共类解决方案{
公共静态BigInteger[]arr;
公共解决方案(int n){
arr=新的大整数[n];
for(每个BigInteger:arr){
每个=BigInteger.0;
}
}
公共静态BigInteger maxlist(){
BigInteger max=arr[0];
for(biginger元素:arr)
如果(元素比较(最大值)>0)
max=elem;
返回最大值;
}
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
int n=in.nextInt();
int m=in.nextInt();
溶液s=新溶液(n);
对于(int a0=0;a0对于(int i=a-1;i您的数组初始化不正确

for(Type obj : arr) {
   // in this context, obj does not refer to a part of the array.
   // obj is an iteration variable, assigning values to obj will not affect the array.
}
您需要改为通过索引分配给数组:

for(int i = 0; i < arr.length; i++) {
   arr[i] = BigInteger.ZERO;
}
for(int i=0;i
您的完整构造函数应该如下所示:

public Solution(int n){
    arr = new BigInteger[n];
    for(int i = 0; i < n; i++){
        arr[i] = BigInteger.ZERO;
    }
}
公共解决方案(int n){
arr=新的大整数[n];
对于(int i=0;i
您是否在此处提供任何输入
biginger k=in.nextbiginger();
?可能
k
在此处获得空值。是的,实际上提供的输入不是空的。这对
int[]不起作用
也有,但默认值为
0
,因为它是一个基本类型的数组。主持人。在标记重复之前,请告诉我问题在哪里?@Vinay:你可以在你发布的问题顶部看到。你的意思是使用valueOf()吗?你能详细说明吗?我已经编辑了我的答案来澄清。看看你的构造函数代码,这就是你的问题所在:)哦..但是我喜欢Foreach循环。它可以用Foreach完成吗?不,正如我解释的,Foreach从数组中获取每个引用,并将其放置在一个临时迭代变量中一次。更新迭代变量没有任何效果。是的。现在我明白了。。