日期:2014-05-20 浏览次数:20993 次
import java.util.*;
public class Test1 {
    Test1[] a;
    int n;
    int[] array;
    ArrayList<Integer> b = new ArrayList<Integer>();
    public void initialArray() {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        a = new Test1[n];
        array = new int[n];
        for (int op = 0; op < n; op++) {
            array[op] = 0;
            Test1 t1 = new Test1();
            t1.array = array;
            a[op] = t1;
        }
        for (int start = 0; start < n; start++) {
            for (int start1 = 0; start1 < n; start1++) {
                a[start].array[start1] = (int) ((Math.random() * n) + 1);
                a[start].b.add(a[start].array[start1]);
            }
            System.out.print(a[start].b);
        }
    }
    public void sortArray() {
        for (int start = 0; start < n; start++) {
            Collections.sort(a[start].b);
            System.out.print(a[start].b);
        }
    }
    public static void main(String[] args) {
        Test1 go = new Test1();
        go.initialArray();
        System.out.println();
        go.sortArray();
    }
}
------解决方案--------------------
a[start].array[start1] = (int) ((Math.random() * n) + 1);//a[start].array没有初始化,
在你代码里面a = new Test1[n];array = new int[n];只是对当前对象的array进行了初始化,而你取得的是a[start]这里面的array都没有被初始化。所以报错