在这里可以看到第五只猴子和第四只猴子所报的数字相同,就不能重复报数字5,思路是每只猴子所报的数字要先和所有猴子报的数字进行比较,如果这个数字没有人报过,就把数字赋值给这个猴子;如果这个数字报过了,这个猴子就要重新报数,不赋值给猴子。
import java.util.Random;
/**
* @author Charles
*/
public class c {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random random=new Random(); //引用随机数
int nextnumber=0; //定义一个整型的变量->下一个数字
int[] monkeys=new int[10]; //定义一个整型的数组变量->猴子,10只猴子随机报数,每个数字不能重复
for(int i=0;i<monkeys.length;i++) { //10只猴子按顺序报数,猴子报完数后退出循环
nextnumber=random.nextInt(10)+1; //把随机数先赋值给下一个数字
if(ismonkey(nextnumber,monkeys)) { //如果返回值为真,则把下一个数字赋值给猴子
monkeys[i]=nextnumber;
System.out.println("第"+(i+1)+"只猴子报数:"+monkeys[i]); //结果输出
}
else //如果返回值为假,这只猴子重新报数
i--;
}
}
/**
* 判断猴子所报的数字是否重复
* @param nextnumber
* 下一个数字
* @param monkeys
* 第 i 只的猴子正在报数
* @return
*/
public static boolean ismonkey(int nextnumber,int[] monkeys) {
boolean opinion=true;
for(int i=0;i<monkeys.length;i++) { //该数字和所有猴子报的数字进行判断
if(nextnumber==monkeys[i]) { //如果改数字和前面猴子所报的数字相同,这个数字就不用,进行下次随机数
opinion=false;
}
}
return opinion;
}
}