Java 如何在不使用arraylist的情况下仅拾取一次随机字符串

Java 如何在不使用arraylist的情况下仅拾取一次随机字符串,java,arrays,Java,Arrays,有没有办法从数组中选择一个随机字符串,而不再选择该字符串。所有字符串只拾取一次后,程序结束 这是我目前的系统, 公共静态void main(字符串[]argv){ 我的问题是,控制台将返回“此人已被选中”等等。这并不是说程序结束系统不工作,因为中断将过早工作 [1] :[如您所见,程序结束,即使没有选择所有五个名称,因为它之前选择了相同的名称][1] 很抱歉,如果这看起来很简单,我几个月前才开始使用java。我认为我不允许使用ArrayList,这是迄今为止我找到的唯一解决方案。 谢谢。只需将列

有没有办法从数组中选择一个随机字符串,而不再选择该字符串。所有字符串只拾取一次后,程序结束

这是我目前的系统, 公共静态void main(字符串[]argv){

我的问题是,控制台将返回“此人已被选中”等等。这并不是说程序结束系统不工作,因为中断将过早工作

[1] :[如您所见,程序结束,即使没有选择所有五个名称,因为它之前选择了相同的名称][1] 很抱歉,如果这看起来很简单,我几个月前才开始使用java。我认为我不允许使用ArrayList,这是迄今为止我找到的唯一解决方案。
谢谢。

只需将列表的顺序随机化,然后逐个打印字符串。

如果不能使用带随机移动的列表来存储随机名称,那么也许可以使用索引列表并随机移动:

String [] names = {"Snoopy", "Donald Duck", "Mickey Mouse", "Little Timmy", "Spiderman"};
List<Integer> indices = IntStream.of(0,1,2,3,4).boxed().collect(Collectors.toList());
Collections.shuffle(indices);

// now iterate the indices and consume random names, one time only
for (int index : indices) {
    System.out.println("Random name: " + names[index]);
}
String[]name={“史努比”、“唐老鸭”、“米老鼠”、“小提米”、“蜘蛛侠”};
列表索引=IntStream.of(0,1,2,3,4).boxed().collect(Collectors.toList());
集合。洗牌(索引);
//现在迭代索引并使用随机名称,仅一次
for(int索引:索引){
System.out.println(“随机名称:”+名称[索引]);
}

这个问题可以随机解决

您可以随机洗牌这个数组{names},然后选择名称[index](索引从0开始,以names.length-1结束)

如何洗牌此阵列:

Random r = new Random();
for (int i = 0; i < names.length; i++){
    int nextSwapIndex = r.nextInt(names.length);
    String temp = names[nextSwapIndex];
    names[nextSwapIndex] = names[i];
    names[i] = temp;
}
Random r=new Random();
for(int i=0;i
利用Fisher–Yates shuffle AlgorithmI意味着我不认为我可以使用任何导入的实用程序,因为我的老师没有教过我们其中的大多数。你能想到不使用添加的实用程序就可以工作的东西吗?嗯,你需要构建一个模仿Java集合的东西;我怀疑这样的答案会有多大用处对于其他人,我不愿意编辑。
Random r = new Random();
for (int i = 0; i < names.length; i++){
    int nextSwapIndex = r.nextInt(names.length);
    String temp = names[nextSwapIndex];
    names[nextSwapIndex] = names[i];
    names[i] = temp;
}