class MyRandom
{
public static void main(String args[])
{
int c=0;
int b[]=new int[15];
for(int i=0;i<15;i++) b[i]=0;
while(c<15)
{
int num=(int) ( Math.random()*100+1 ); //加 ( )
for(int j=0;j<=c;j++)
if(b[j]==num) 
                               break;
                            if( j == c )
                                { b[j]=num;c=c+1;}
}
}       }

解决方案 »

  1.   

    for(int j=0;j<=c;j++)
    if(b[j]!=num) {b[j]=num;c=c+1;}这两句的问题太大了,你的b[j]不论j等于几的时候,只要不和num相等就一直在做等于num。
    估计你的程序到最后b数组里面的数全一样.楼上的就是在j==c,的时候在帮b[j]赋值
      

  2.   

    同意 vongood((my c++)) 的做法!
      

  3.   

    import java.util.*;
    class Test{
      public static void main(String args[]){ 
        HashSet set = new HashSet();
        Random rand = new Random();
        while(set.size()<15)set.add(rand.nextInt(100));
        System.out.println(set);  
      }
    }
      

  4.   

    /*
     * MyRandom.java  v 1.0  08/30/2004
     * 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
     */public class MyRandom
    {
        public static void main( String args[] )
        {
            int randomNum;              // 随机整数
            int b[] = new int[ 15 ];    // 用来存储生成的15个随机整数        // 初始化数组
            for ( int i = 0; i < 15; i++ )
            {
                b[ i ] = 0;
            }        // 生成15个不同的1到100之间的随机整数,并依次打印
            for ( int i = 0; i < 15; i++ )
            {
                // 生成一个符合要求的数,并将其存入数组
                for ( int j = 0; j <= i; j++ )
                {
                    // 产生一个1到100之间的随机整数
                    randomNum = 1 + (int)( Math.random()*100 );                // 如果生成了相同的数,则跳出,重新生成
                    if ( b[ j ] == randomNum ) 
                    {
                        break;
                    }                // 整数符合要求,存入数组
                    if( j == i )
                    {
                        b[ j ] = randomNum;
                    }
                }            // 打印出此次生成的数
                System.out.println( "第" + (i + 1) + "个整数是: " + b[ i ]  );
            }
        }         
    }
      

  5.   

    /*
     * MyRandom.java  v 1.0  08/30/2004
     * Copyright (c) Ardor
     * 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
     */public class MyRandom
    {
        public static void main( String args[] )
        {
            int randomNum;              // 随机整数
            int b[] = new int[ 15 ];    // 用来存储生成的15个随机整数        // 初始化数组
            for ( int i = 0; i < 15; i++ )
            {
                b[ i ] = 0;
            }        // 生成15个不同的1到100之间的随机整数,并依次打印
            for ( int i = 0; i < 15; i++ )
            {
                // 生成一个符合要求的数,并将其存入数组
                for ( int j = 0; j <= i; j++ )
                {
                    // 产生一个1到100之间的随机整数
                    randomNum = 1 + (int)( Math.random()*100 );                // 如果生成了相同的数,则跳出,重新生成
                    if ( b[ j ] == randomNum )
                    {
                        break;
                    }                // 整数符合要求,存入数组
                    if( j == i )
                    {
                        b[ j ] = randomNum;
                    }
                }            // 打印出此次生成的数
                System.out.println( "第" + (i + 1) + "个整数是: " + b[ i ]  );
            }
        }
    }
      

  6.   

    上面的代码有点小错误,更正如下:/*
     * MyRandom.java  v 1.0  08/30/2004
     * Copyright (c) Ardor
     * 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
     */public class MyRandom
    {
        public static void main( String args[] )
        {
            int randomNum;              // 随机整数
            int b[] = new int[ 15 ];    // 用来存储生成的15个随机整数        // 初始化数组
            for ( int i = 0; i < 15; i++ )
            {
                b[ i ] = 0;
            }        // 生成15个不同的1到100之间的随机整数,并依次打印
            for ( int i = 0; i < 15; i++ )
            {
                // 生成一个符合要求的数,并将其存入数组
                for ( int j = 0; j <= i; j++ )
                {
                    // 产生一个1到100之间的随机整数
                    randomNum = 1 + (int)( Math.random()*100 );                // 如果生成了相同的数,则跳出,重新生成
                    if ( b[ j ] == randomNum )
                    {
                        break;
                    }
                
                    if( j == i )
                    {
                        b[ j ] = randomNum;  // 整数符合要求,存入数组
                        
                        // 打印出此次生成的数
                        System.out.println( "第" + ( j +    1 ) + "个整数是:"
                            + b[ j ] );
                    }
                }
            }
        }
    }
      

  7.   

    :Ardor007(阿多) 楼上兄弟应该是对的
      

  8.   

    这是个典型的发牌问题。生成n到m的数列,首先随机生成n和m之间的x,然后将最后一个数和x互换(第一次是m,第二次是m减一),依次不停的生成x,不断的交换最后一个数和x。这样一次循环就可以完成。