所以我遇到了一个小问题:我想随机化一个字符串数组而不重复。我已经搜索过这样的东西了,我发现了一些“没有重复的随机数组”,但我能找到的只是随机化一个int
的数组而且它没有给我我想要的结果。
这是我的代码(我只是缩短了一些,只展示了有用的部分)所以你们可以帮助我使用我自己的代码。我想要随机化的数组是allCommands[]
。无论如何,这是:
Box box = Box.createVerticalBox();
String[] allCommands = new String[]{"start", "help", "hint", "look around", "take note",
"look under bed"};
JLabel[] fun = new JLabel[allCommands.length];
for(int o = 0 ; o < allCommands.length ; o++){
fun[o] = new JLabel(allCommands[o]);
box.add(fun[o]);
}
快速注意:我的代码中的allCommands[]
数组更大,我可能会更大,所以我想到了一种方法可以使随机发生器轻松扩展...
我尝试了Collection
和ArrayList
之类的东西(或类似的东西),但我找不到我想要的结果。
快速提示#2:如果我的问题不是很明确,或者您希望我在代码或其他内容中添加有关变量的更多详细信息,请告诉我,我将对其进行编辑。
快速注释#3(这么多快速笔记!):我对编程很陌生。如果可能的话,我希望使用for()
循环,Arrays
,if()
和else if
。但任何方式进行随机化而不重复一系列字符串会让我感到高兴...
我非常感谢!
答案 0 :(得分:1)
如果您想要对阵列allCommands
进行随机播放,可以采取多种方法。以下是使用Collections.shuffle()
和Arrays.asList()
来移植由List
支持的allCommands
, -
String[] allCommands = new String[] { "start",
"help", "hint", "look around", "take note",
"look under bed" };
System.out.println(Arrays.toString(allCommands));
Collections.shuffle(Arrays.asList(allCommands)); // <-- shuffles allCommands
System.out.println(Arrays.toString(allCommands));