大家试试这个JAVA程序,我第一次能用在用就用不了了

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:53:02
这是个出5组随机数的程序,我用了一次,什么都没动用第二次就不行了
大家试试,高手回答下这是为什么?

public class Suiji{
public static void main(String[] args) {
int[][] si=new int[5][6];
int i,j,m,n,l,k=0;
for(i=0;i<5;i++){
for(j=0;j<6;){
si[i][j]=(int)(48.0*Math.random()+1);
for(m=0;m<j-1;m++)
if(si[i][j]==si[i][m]) k++;
if(k==0) j++;
}
}
for(n=0;n<5;n++){
System.out.println("\n"+(n+1)+":");
for(l=0;l<6;l++)
System.out.print(si[n][l]+" ");
}

}
}

if(si[i][j]==si[i][m]) k++;
if(k==0) j++;

这两句形成了死循环,把第一句后面加上
if(si[i][j]==si[i][m]) k++; else k=0;
就行了~

搂主的意思是不是每组里面的数字还不相同?

如果不是这样
要不然这段代码
for(m=0;m<j;m++)
{
if(si[i][j]==si[i][m]){
k++;
}
}

if(k==0){
j++;
}

就没什么用了

直接

for(i=0;i<5;i++){
for(j=0;j<6;j++){
si[i][j]=(int)(48.0*Math.random()+1);
}
}
就可以了

如果非要实现不能有重复数字的功能那就这样写

public class Suiji{
public static void main(String [] args) {
int[][] si=new int[5][6];
int i,j,m,n,l,k=0;

for(i=0;i<5;i++){
java.util.ArrayList al = new java.util.ArrayList();

for(j=0;j<6;){
do{
si[i][j]=(int)(48.0*Math.random()+1);
}while( al.contains(si[i][j]) );

al.add(si[i][j]);
j++;
}

}