今天借朋友问我一个题为例子,写一个简单的小算法。
这个题用数组会很好理解,职员数组、幸运儿拟定数组分别表示。
String[] strNmae={"张三","李四","王五","赵六","小白","小明","小红"};
int []strSum=new int[5];
然后通过Random随机数添加到strSum数组(幸运儿数组);
Random r = new Random();
String[] strNmae={"张三","李四","王五","赵六","小白","小明","小红"};
int []strSum=new int[5];
for(int i=0;i<=4;i++)
{
int sum = r.nextInt(7);
strSum[i]=sum;
}
for(int x:strSum)
{
System.out.println(strNmae[x]);
}
这样写的话,问题显而易见,会出现重复的职员人名。
避免重复数组的方法很多,最简单实用的就是用加一层循环判断,要注意的是含有重复的话用Break跳出后,外层循环也会减少,所以需要把减少的循环加上。
完整JAVA代码如下
public static void main(String[] args) {
Random r = new Random();
String[] strNmae={"张三","李四","王五","赵六","小白","小明","小红"};
int []strSum=new int[5];
for(int i=0;i<=4;i++)
{
boolean a = true;
int sum = r.nextInt(7);
for(int j=0;j<=4;j++) {
if(strSum[j]==sum)
{
a = false;
i--;
break;
}
}
if(a) {
strSum[i]=sum;
}
}
for(int x:strSum)
{
System.out.println(strNmae[x]);
}
}
|