String[] name={"乔帮主","乔乔","小乔","大乔","神通广大","柳岩","张雨绮","李思思","高老师"};
键盘输入一个正整数N
如果N小于name的长度, 则随机打印N个人的名字,不能重复
如果N大于name的长度, 则打印整个name里的人名
import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
public class Test {
public static void main(String[] args) {
String[] name={"乔帮主","乔乔","小乔","大乔","神通广大","柳岩","张雨绮","李思思","高老师"};
System.out.println("请输入N:");
Scanner input=new Scanner(System.in);
int N=input.nextInt();
if(N<name.length){
System.out.println(N+"<数组长度"+name.length);
Set<String> names=new HashSet<>();//创建一个名字的集合,HashSet集合表示里面的元素不能重
while(names.size()<N){
names.add(name[(new Random()).nextInt(name.length)]);//下标必须是变化的
//若固定了,每次向集合里面加的只有name数组中的一个字符串,又因为集合里的元素不能重
//所以最终进去集合的只有一个,程序会无限循环下去(除非N=1)
//若把下标改成names.size(),则只能点到前N个同学
//所以下标必须得是0-name.length-1的随机数,才能保证点名的随机性
}
System.out.println(names);
}else{
System.out.println(N+">="+name.length);
//System.out.println(name.toString());打印的是地址
//想直接打印数组 得用Arrays里的toString方法
System.out.println(Arrays.toString(name));
}
}
}