刚开始学java
这是我写的代码
但输出的却还是有重复,求各位大神看看问题在哪!
import java.util.*;
class Ex01
{
public static void main(String args[])
{
int a[]=new int[7];
int i=0;
Random rd=new Random();
a[0]=rd.nextInt(7);
System.out.print(a[0]);
for(i=1;i<a.length;i++)
{
a[i]=rd.nextInt(7);
for(int j=0;j<i;j++)
{
if(a[j]==a[i])
i=i-1;
break;
}
}
for(int k=1;k<i;k++)
{System.out.print(" "+a[k]);}
}
}
你是想生成0-7的随机数吗?并且放在数组里面?要求数组里面生成的随机数不重复是吗?
public static void main(String args[]) {
Integer a[] = new Integer[7];
int index = 0;
Random rd = new Random();
for (int i = 0; i < a.length; i++) {
int num = rd.nextInt(7);//生成随机数
while (true) {
//判断数组里面是否存在某个值,这里将数组转成list判断
if (Arrays.asList(a).contains(num)) {
//如果存在,就重新生成.
num = rd.nextInt(7);
} else {
a[index] = num;
index++;
break;
}
}
}
for (int k = 0; k < a.length; k++) {
System.out.print(" " + a[k]);
}
}
public static void main(String args[])
{
int a[]=new int[7];
int i;
Random rd=new Random();
for(i=1;i<a.length;i++)
{
int i1 = rd.nextInt(7);//赋值的随机数
a[i] = i1;
while (true){//死循环 那这个数跟目前的数组里所有数比较
int num = 0;//为0 就没有重复跳出执行下一次
for (int j = 0; j < 7; j++) {//循环所有
if(a[j]==i1){//如果随机数和某一个位置的数相同
num=1;//改变为1 继续执行
i1 = i1-1;//随机数减一
}
}
if(num==0){//没有重复的 跳出 为数组赋值
a[i] = i1;
break;
}
}
}
for(int k=1;k<i;k++)
{System.out.print(" "+a[k]);}
}
试下吧