//生成99个不同的数,包括0
public class PanDuan{
  public static void main(String args[]){
        int array[] = new int[99];
        int i,j,a,n,k=0;
        
        for(i=0;i<99;i++){
            array[i] = 0;  //数组初始化
        }
        
        for(i=1;i<99;i++){
            for(j=0;j<i;j++){
                a = (int)(100*Math.random());  //生成一个随机数a,0<a<100
                //判断前i-1个数是否与第i个数相同,如果不同,执行k++
                for(n=0;n<=i;n++){
                    if(array[n]!=a){
                        k++;
                    }
                }
                if(k==i){
                    array[i] = a;//如果k==i  则array[i] = a
                }
                else{
                    j = 0;
                }
            }
        }        for(i=0;i<99;i++){
           System.out.println(array[i]);                            
        }
    }
}

解决方案 »

  1.   

    public class PanDuan {
    public static void main(String args[]) {
    int array[] = new int[99];
    boolean flag;  //用于判断是否发现相同的数 for (int i = 0; i < 99; i++) {
    flag=false;
    int a = (int) (100 * Math.random()); 
    for (int j = 0; j < i; j++) {
    if(array[j]==a){
    flag=true;
    break;
    }
    }
    if(!flag){
    array[i]=a;
    }else{
    i--;
    }
    } for (int i = 0; i < 99; i++) {
    System.out.println(array[i]);
    }
    }
    }
    你的代码好像是死循环,帮你改了一下。
      

  2.   


    public class StudentHome {
    public static void main(String args[]) {
    int array[] = new int[99];
    int i, j, a = 0, n, k = 0; for (i = 0; i < 99; i++) {
    array[i] = 0; // 数组初始化
    } for (i = 1; i < 99; i++) {
    a = (int) (100 * Math.random()); // 生成一个随机数a,0<a<100
    for(j = 0; j <= i; j++) {
    if(array[j] != a) {
    k++;
    }
    }
    if(k == (i+1)){
    array[i] = a;
    }

    else {
    --i;
    k = 0;
    }

    } for (i = 0; i < 99; i++) {
    if(i%20 == 0)
    System.out.println();
    System.out.print(array[i] + "   ");

    }
    }
    }
    k的值应该要回0,否则的话,到后面,k的值永远比i大,那么就陷入死循环了
      

  3.   


    import java.lang.Class;public class StudentHome {
    public static void main(String args[]) {
    int array[] = new int[99];
    int i, j, a = 0, n, k = 0; for (i = 0; i < 99; i++) {
    array[i] = 0; // 数组初始化
    } for (i = 1; i < 99; i++) {
    a = (int) (100 * Math.random()); // 生成一个随机数a,0<a<100
    for(j = 0; j <= i; j++) {
    if(array[j] != a) {
    k++;
    }
    }
    if(k == (i+1)){
    array[i] = a;
    k = 0;
    }

    else {
    --i;
    k = 0;
    }

    } for (i = 0; i < 99; i++) {
    if(i%20 == 0)
    System.out.println();
    System.out.print(array[i] + "   ");

    }
    }
    }
    错了,上面得少了一个k=0,这个是对的
      

  4.   

    可以借用HashSet的特性;public class Test {
        public static void main(String args[]) {
                HashSet<Integer>  set = new HashSet<Integer>();
                while(set.size() < 100){
                   set.add((int)(1000 * Math.random() - 1)); 
                            //生成的是99个 1000 以内(含零)的整数;
                }
                for(Integer i : set){
                   System.out.print(i + " ");
                }
            }
        }
    }