用JAVA编程实现随机产生七个不同的整数

代码如下,但是不知道为何是死循环,求大神指点
public class t1{
int a[]=new int[7];
t1()
{
for(int i=0;i<7;i++)
{this.a[i]=0;}
}
void generate()
{
for(int j=0;j<7;j++)
{
int z=0;
boolean p=true;
while(p)
{
a[j]=(int)(Math.random()*7)+1;
for(int k=0;k<j;k++)
{
if(a[j]==a[k])
{z=1;}
}
System.out.println(z);
if(z==0)p=false;
}
}
}
public static void main(String[] args)
{
t1 test=new t1();
test.generate();
for(int i=0;i<7;i++)
{System.out.println(test.a[i]);}
}
}

void generate() {
for (int j = 0; j < 7; j++) {
int z = 0;
boolean p = true;
while (p) {
a[j] = (int) (Math.random() * 7) + 1;
for (int k = 0; k < j; k++) {
if (a[j] == a[k]) {
//当你改变了z的值为1之后
z = 1;
}
}
System.out.println(z);
if (z == 0)//在这个方法中,z不会再等于零,于是p永远不等于false,因此陷入了while(p)的死循环中。
p = false;

}
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-13
System.out.println(z);
if(z==0)p=false;
break;
}

加个break 就跳出循环了追问

恩 确实不再死循环了,但是这样出来的结果会有重复的,就是这个程序我是想输出七个互不相同的数,结果有相同的,哪里需要改吗?

追答

你在循环中有一段是打印z的 你注释那句话 再看看。

追问

恩 那个打印Z的已经删掉了再测试的,是打印出七个数,但是有重复的

追答

这样修改就可以了。

追问

可以!谢谢!原来为什么不行啊?这个Loop的用法和之前有啥区别吗?

本回答被提问者采纳
相似回答