0

如果我们列出所有低于 10 且是 3 或 5 的倍数的自然数,我们会得到 3、5、6 和 9。这些倍数的和是 23。求所有低于 1000 的 3 或 5 的倍数之和。

所以它给出了空指针异常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);
      }


}
4

2 回答 2

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);
      }


}
于 2013-09-17T02:33:28.243 回答
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);
  }
}
于 2013-09-17T02:41:08.517 回答