空指针异常

时间:2010-11-02 06:23:39

标签: java

public class Main {
public static void main(String args[]) {

List list = new List(0);

int[] intArr = null;  
list.fillWithRandom(intArr); // null pointer
list.print(intArr);
   }
 }



  import java.util.*;
  class List {


 private static final int NUMINTS = 10;



 private void list(int numInts) {
 List list = new List(10); 
 int[] intArr = new int[10];
 } 

public List(int i) {
// TODO Auto-generated constructor stub
 }


//fill array with random numbers
 public void fillWithRandom(int intArr[]) {
 Random r;
 r = new Random();

 int i;

 for(i=0; i < NUMINTS ; i++)

 intArr[i] = r.nextInt();     // null pointer
} 

 //display numbers
public void print(int intArr[]) {
int i;
for(i=0 ; i < NUMINTS; i++)
System.out.println(intArr[i]);


    }
  }

我在编译器中的消息说:

线程“main”java.lang.NullPointerException中的异常  在List.fillWithRandom(List.java:28)  在Main.main(Main.java:9)

3 个答案:

答案 0 :(得分:4)

您将int数组设置为null,然后将其传递给fillWithRandom。然后,在没有为该数组实际分配任何空间的情况下,您尝试填充它。

您需要先分配内存才能使用它。


这是一个很好的简单开头:

test.java:

    public class test {
        public static void main(String args[]) {
            MyList list = new MyList(10);
            list.fillWithRandom();
            list.print();
        }
    }

MyList.java:

    import java.util.Random;

    public class MyList {
        private int[] list = null;

        public MyList(int numInts) {
            list = new int[numInts];
        }

        public void fillWithRandom() {
            Random r = new Random();
            for (int i=0; i < list.length; i++)
                list[i] = r.nextInt();
        }

        public void print() {
            for (int i=0 ; i < list.length; i++)
                System.out.println(list[i]);
        }
    }

答案 1 :(得分:0)

您将空数组intArr传递给方法fillWithRandom

答案 2 :(得分:0)

  class Main {
private static Object intArr;

public static void main(String[] args) {

    List list = new List(10);
    list.fillWithRandom(intArr);
list.print(intArr);

}
  }




   import java.util.Random;
 public class List {

 private int[] list = null;

 public List(int numInts) {
 list = new int[numInts];
 }

 public void fillWithRandom(Object intArr) {
     Random r = new Random();
     for(int i = 0; i < list.length; i++)
         list[i] = r.nextInt();

 }
 public void print(Object intArr) {
     for(int i=0; i <list.length; i++)
     System.out.println(list[i]);
 }


   }