import java.util.Random;
public class RandomDemo01 {
public static void main(String arg[]){
Random ran = new Random();
int temp = ran.nextInt(7)+1;
int arr[] = new int[7];
for(int i=0;i<7;i++){
for(int j=0;j<i;j++){
if(arr[j] == temp){
temp = ran.nextInt(7)+1;
j = 0;
}
}
arr[i] = temp;
}
for(int i=0;i<7;i++){
System.out.print(" "+arr[i]);
}
}
}程序是想做到7个不一样的数,但是运行的结果会出现重复的: 7 2 4 3 6 1 7,反复查找没找到问题所在,求高手赐教;
下面的程序是一个能运行正确的程序import java.util.Random;
public class RandomDemo02 {
public static void main(String args[]){
Random ran = new Random();
int arr[] = new int[7];
for(int i=0;i<7;i++){
arr[i] = ran.nextInt(7)+1;
for(int j=0;j<i;j++){
if(arr[i] == arr[j]){
i--;
break;
}
}
}
for(int i=0;i<7;i++){
System.out.print(" "+arr[i]);
}
}
}
public class RandomDemo01 {
public static void main(String arg[]){
Random ran = new Random();
int temp = ran.nextInt(7)+1;
int arr[] = new int[7];
for(int i=0;i<7;i++){
for(int j=0;j<i;j++){
if(arr[j] == temp){
temp = ran.nextInt(7)+1;
j = 0;
}
}
arr[i] = temp;
}
for(int i=0;i<7;i++){
System.out.print(" "+arr[i]);
}
}
}程序是想做到7个不一样的数,但是运行的结果会出现重复的: 7 2 4 3 6 1 7,反复查找没找到问题所在,求高手赐教;
下面的程序是一个能运行正确的程序import java.util.Random;
public class RandomDemo02 {
public static void main(String args[]){
Random ran = new Random();
int arr[] = new int[7];
for(int i=0;i<7;i++){
arr[i] = ran.nextInt(7)+1;
for(int j=0;j<i;j++){
if(arr[i] == arr[j]){
i--;
break;
}
}
}
for(int i=0;i<7;i++){
System.out.print(" "+arr[i]);
}
}
}
而正确的程序中增加了如下代码:for(int j=0;j<i;j++){
if(arr[i] == arr[j]){
i--;
break;
}
}
这个就是验证数组中是否有重复的数据,如果已经有了 本次产生的随机数就不再放入数组中了,i--就是这个道理。
for(int j=0;j<i;j++){
if(arr[j] == temp){
temp = ran.nextInt(7)+1;
j = 0;
}
}
arr[i] = temp;
}
第一个程序也增加了个判断是否有重复的,就是不知道错误在哪里;
temp = ran.nextInt(7)+1;
j = -1;
}
每次j=0之后会j++,所以从1开始判定,永远是和arr[0]重复,j=-1以后再自加才是从0开始
public static void main(String arg[]) {
Random ran = new Random();
int temp;
List<Integer> list= new ArrayList<Integer>();
for (int i = 0; i < 7; i++) {
do {
temp = ran.nextInt(7) + 1;
}while(list.contains(temp));
list.add(temp);
}
System.out.print(list);
}
if(arr[j] == temp){
temp = ran.nextInt(7)+1;
j = 0;
}里面的j=1 改为j=-1试下。
Random ran = new Random();
int temp;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < number; i++) {
do {
temp = ran.nextInt(number) + 1;
} while (list.contains(temp));
list.add(temp);
}
return list;
}