public class Random { int i = 1; int num[] = null; int temp; boolean log = true; public static void main(String agrs[]) {
Random a;
a = new Random();
System.out.println(a.setemp());
} public int setemp() {
int temp = (int) (Math.random() * 37 + 1);
while (true) { if (i <= 6) {
num[i] = temp;
i ++;
log = false;
} else {
for (int count = 0; count < num.length; count++) {
if (num[count] == temp) {
i = 1;
log = false;
setemp(); }
}
}
num = null;
return temp;
}
}
}

解决方案 »

  1.   

    num[]长度没有定啊~~不好用num.length
      

  2.   

    public class Random { int i = 1; int num[] = new int[7]; int temp; boolean log; public static void main(String agrs[]) {
    Random a;
    a = new Random(); for (int i = 1; i <= 6; i++) {
    boolean log = true;
    System.out.println(a.setemp());
    }
    } public int setemp() {
    int temp = (int) (Math.random() * 37 + 1);
    while (true) { if (i <= 6) {
    num[i] = temp;
    i++;
    log = false;
    } else {
    for (int count = 0; count < 7; count++) {
    if (num[count] == temp) {
    i = 1;
    log = false;
    setemp(); }
    }
    }
    num = null;
    return temp;
    }
    }
    }循环if (i <= 6) {
    num[i] = temp;
    i++;
    log = false;
    } else {
    for (int count = 0; count < 7; count++) {
    if (num[count] == temp) {
    i = 1;
    log = false;
    setemp(); }
    }
    }
    说有错错误:Exception in thread "main" java.lang.NullPointerException
    at Random.setemp(Random.java:26)
    at Random.main(Random.java:17)
    23
      

  3.   

    在执行for (int i = 1; i <= 6; i++) {
    boolean log = true;
    System.out.println(a.setemp());
    }
    的时候,第一次进入setemp()执行时,会执行num = null;
    ,此时num已经为空了,当程序第二次进入setemp()时,num[i] = temp;
    当然会报错了。
      

  4.   


    public class Randoma {int i = 1;int[] num = new int[7];int temp;boolean log = true;public static void main(String agrs[]) {
    Randoma a;
    a = new Randoma();
    System.out.println(a.setemp());
    }public int setemp() {
    int temp = (int) (Math.random() * 37 + 1);
    while (true) 
    {

    if (i <= 6)
    {
    num[i] = temp;
    i++;
    log = false;

    else{
    for (int count = 0; count < num.length; count++) {
    if (num[count] == temp) {
    i = 1;
    log = false;
    setemp();
    }
    }
    }
    num = null;
    return temp;
    }
      }
    }可以正常运行
      

  5.   

    你不能运行可能是和系统类库中的Random冲突.