为什么我在调用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);
}
}
提前致谢! 阿布舍克巴克
答案 0 :(得分:1)
您永远不会初始化arr
数组。只需将其添加到构造函数中:
public Bubble(final int size) {
this.size = size;
this.arr = new int[size];
}
另请注意,我重命名了N
参数。 Java中的变量应以小写字母开头。