由于索引数组导致Java NullPointerException

时间:2013-09-17 02:32:27

标签: java nullpointerexception

如果我们列出10以下的所有自然数是3或5的倍数,我们得到3,5,6和9.这些倍数的总和是23.求下面3或5的所有倍数的总和1000。

因此它在arr[i] = i;处给出了空指针异常。我是Java编程的新手,所以我想尝试数组

 public class Multiples
    {
        private int arr[];
        private int sum = 0;

    public void multiples1()
      {
        for(int i= 0 ; i <= 1000; i++)
            {
                arr[i] = i ;
                if((i%3 == 0 && i%5==0))
                    {
                        sum = sum + arr[i];                         
                    }                   
            }   
        System.out.println(sum);
      }


}

2 个答案:

答案 0 :(得分:4)

  • 应为private int arr[] = new int[arraySize];
  • 数组是Object,因此如果您不使用new int[size]对其进行初始化,则为null
  • 如果您执行引用null的参考变量的操作,您将面临NullPointerException

您的修改后的代码将是:

public class Multiples
    {
        private int arr[] = new int[1000];
        private int sum = 0;

    public void multiples1()
      {
        for(int i= 0 ; i < 1000; i++)
            {
                arr[i] = i ;
                if((i%3 == 0 && i%5==0))
                    {
                        sum = sum + arr[i];                         
                    }                   
            }   
        System.out.println(sum);
      }


}

答案 1 :(得分:1)

以下代码段可以实现您想要实现的目标。

public class Multiples
{
    private int arr[] = new int[1001];
    private int sum = 0;

public void multiples1()
  {
    for(int i= 0 ; i <= 1000; i++)
        {
            arr[i] = i ;
            if((i%3 == 0 && i%5==0))
                {
                    sum = sum + arr[i];                         
                }                   
        }   
    System.out.println(sum);
  }
}