3d打印建筑视频:能通过编译 但是肯定有问题的一个程序
public class Suiji{
public static void main(String[] args){
int[][] si=new int[5][6];
int i,j,k,m=0,s,q;
for(i=0;i<5;i++)
{for(j=0;j<6;)
{si[i][j]=1+(int)(48.*Math.random());
for(k=0;k<j;k++)
{if(si[i][j]==si[i][k]) m++;}
if(m==0) j++;} }
for(s=0;s<5;s++)
{for(q=0;q<6;q++)
System.out.println(i+" "+si[i][q]);}}}
问题主要是没有在每一次检测重复性之前让 m 归零。 以下是修改好的程序(所有变化都有注释):
class Suiji {
public static void main( String[ ] args ) {
int[ ][ ] si = new int[ 5 ][ 6 ];
int i, j, k, m = 0, s, q;
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 6; ) {
si[ i ][ j ] = 1 + ( int ) ( 48. * Math.random( ) );
m = 0; // 加了这行
for ( k = 0; k < j; k++ )
if ( si[ i ][ j ] == si[ i ][ k ] )
m++;
if ( m == 0 )
j++;
}
}
for ( s = 0; s < 5; s++ ) {
for ( q = 0; q < 6; q++ )
System.out.print( si[ s ][ q ] + "\t" ); // 改了这行
System.out.println( ); // 加了这行
}
}
}
我另外写了个同样是打印 5 组、每组 6 个不重复的随机数的小程序,你可以参考参考:
import java.util.*;
class Random {
public static void main( String[ ] args ) {
for ( int i = 0; i < 5; i++ ) {
Set set = new HashSet( ); // 利用 Set 不保存重复元素的特性
while ( set.size( ) < 6 )
set.add( new Integer( ( int ) ( 1 + 48 * Math.random( ) ) ) );
System.out.println( set ); // 打印容器类的内容是非常方便的事
}
}
}
没有初始化random种子