L1:for(i=k;i<25;i++)
{
k=i;
str1[i]=(int)(Math.random()*25+1);
for(j=i-1;j>=0;j--)
if(str1[i]==str1[j])
continue L1;
}

解决方案 »

  1.   

    L1:for(i=k;i<25;i++)
            {
               k=i;
               str1[i]=(int)(Math.random()*25+1);
                  for(j=i-1;j>=0;j--)
                      if(str1[i]==str1[j])
                       { i--;
                         continue L1;
                        }
            }
      

  2.   

    L1:for(i=k;i<25;i++)
    {
        k=i;
        str1[i]=(int)(Math.random()*25+1);
        for(j=i-1;j>=0;j--)
        if(str1[i]==str1[j])
            continue L1;
    }
    你这里能保证str1中的元素不同吗。你的是随即数字,只是保证像临的两个元素不同。
    import java.io.*;
    public class str25
    {
    public static void main(String[] args) throws IOException{
    int m=0;
    int n=0;
    int i=0;
    int j=0;
    int k=0;
    int[] str1=new int[25];
    int[][] str2=new int[5][5];
    while(true)
    {
    L1:for(i=k;i<25;i++){
    k=i;
    str1[i]=(int)(Math.random()*25+1);
    for(j=i-1;j>=0;j--){
    if(str1[i]==str1[j]){
    i--;
    continue L1;
    }
    }
    }
    break;
    }//END WHILE
    for(i=0;i<5;i++){
    for(j=0;j<5;j++){
    str2[i][j]=str1[m];
    ++m;
    System.out.print(str2[i][j]+",");
    ++n;
    if(n==5){
    System.out.println();
    n=0;
    }
    }
    }

    }// END MAIN
    }//END CLASS
      

  3.   

    to kb(天堂游侠)
    谢谢。你的答案是对的。但我看了好久还是没搞清楚为什么要在if里加一个i--.  :(  你能为我解释一下吗?:D
      

  4.   

    因为CONTINUE是继续下一次循环。
    我上面改的也应该是对的。。我试过的
      

  5.   

    to d0wei()
    恩,你的也是对的。我是新手,还请多多help啊。^_^但我还是不明白,for(j=i-1;j>=0;j--) if(str1[i]==str1[j])循环为什么不能保证所有的元素不相同呢?
    continue L1.应该是转向标号L1的地方继续循环啊。
      

  6.   

    用CONTINUE时,i++也是会被执行的这样就算是生成了相同的数也会被留下,而继续下一个。