泡泡排序||空指针异常

时间:2014-07-22 10:34:32

标签: java arrays

为什么我在调用main的b.initialize()时会在运行时收到错误?

问题出在initialize()代码中。

我在为第二行提供输入时收到NullPointerException

Exception in thread "main" java.lang.NullPointerException
        at Bubble.initialize(Bubble.java:17)
        at Bubble.main(Bubble.java:46)

import java.io.*;
public class Bubble {

    private int size;
    private int[] arr;
    public Bubble(int N)
    {
        size = N;
    }
    public void initialize()
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for(int i=0; i<size; i++)
        {
          try {
                this.arr[i]=Integer.parseInt(br.readLine());
            }
            catch(IOException ioe){}
        }
    }
    public int[] sort()
    {
        int max=size-1;
        int temp=0;
        while(max==0)
        {
            for(int i=0;i<max;i++)
            {
               if(arr[i]>arr[i+1])
               {
                   temp = arr[i+1];
                   arr[i+1]=arr[i];
                   arr[i]=temp;
               }

            }
        max--;
      }
      return arr;
    }

    public static void main(String[] args)
    {
        Bubble b = new Bubble(5);
        b.initialize();
        int res[] = b.sort();
        for( int el : res )
        System.out.println(el);
    }
}

提前致谢! 阿布舍克巴克

1 个答案:

答案 0 :(得分:1)

您永远不会初始化arr数组。只需将其添加到构造函数中:

public Bubble(final int size) {
    this.size = size;
    this.arr = new int[size];
}

另请注意,我重命名了N参数。 Java中的变量应以小写字母开头。