【问题标题】:Null Pointer Exception in for loop with an array带有数组的for循环中的空指针异常
【发布时间】:2020-03-21 07:14:09
【问题描述】:

为什么我在为 Average 构造函数运行驱动程序时会出现此空指针异常:


  public Average()
  {
    int[] data = new int[5];

    for(int i = 0; i < data.length; i++)
    {
      score = input.nextLine();
      int value = Integer.parseInt(score);
      data[i] = value;


    }
    selectionSort();
    calculateMean();

  }

Average 构造函数运行良好,直到调用 calculateMean 和 selectionSort 方法。

  public void calculateMean()
  {
    int num;
    for(int i = 0; i < data.length; i++)
    {
      num = data[i];
      sum += num;

    }
    mean = sum/data.length;
  public void selectionSort()
  {
    int maxValue;
    int maxIndex;
    for (int startScan = 0; startScan < (data.length-1); startScan++)
    {
     maxIndex = startScan;
     maxValue = data[startScan];

     for(int index = startScan + 1; index < data.length; index++)
     {
        if (data[index] > maxValue)
        {
          maxValue = data[index];
          maxIndex = index;
      }
    }
    data[maxIndex] = data[startScan];
    data[startScan] = maxValue;
    }
  }
}

这两种方法都给出空指针异常,我不知道为什么。

【问题讨论】:

    标签: arrays for-loop methods constructor nullpointerexception


    【解决方案1】:

    data 似乎是构造函数中的局部变量,而不是字段。 我假设由于它确实编译没有错误,因此您有一个名为 data 类型的字段 int[] 未初始化并被构造函数中的本地数组遮蔽,因此该字段 data 保持未初始化(因此,@ 987654324@)

    看看this Wikipedia page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多