函数是求1到10以内10个不同的数,为什么在第11行把i=i-1写上程序就没反应,写成了i=i-2程序报错说expection thread 但是把i=i-2整个句子删除后,程序可以就可以运行

package jlesson.lesson1.ch01;

public class Test1
{

public static void main(String[] args)
{
int j[]=new int[10];
outer:
for(int i=0;i<10;i++)
{
    j[i]=(int)(Math.random()*10+1);  //生成10个1-10不同的数
    for(int k=0;k<=i;k++)       //比较是否有相同的
    {
        if(j[i]==j[k])
        {i--;continue outer;}        
    }
    
}
for(int m=0;m<10;m++)      //显示
{System.out.println(j[m]);}

}

}

看下具体的异常信息
if判断内为什么i要递减?
i作为外层循环的产量,在递增。

不是i=i-1的问题
问题是for(int k=0;k<=i;k++)中不能是 k<=i ,应该是 k<i

 for(int k=0;k<i;k++)       //比较是否有相同的

这是要随机的值j[i]与数组中下标i之前的值比较。不能是j[i]与j[i]自己比较
不然每次都是j[i]==j[i]都会相等, 每次都i--就死循环了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632