在Java中无法从列表中接收多个不同的随机字符串
我想对它进行编码,以便我的代码的输出以随机顺序输出列表中的所有字符串,但不重复和重复它们。我希望用三个以上的变量来实现这一点,但为了简短起见,在这个示例中,我只有三个变量在Java中无法从列表中接收多个不同的随机字符串,java,random,while-loop,Java,Random,While Loop,我想对它进行编码,以便我的代码的输出以随机顺序输出列表中的所有字符串,但不重复和重复它们。我希望用三个以上的变量来实现这一点,但为了简短起见,在这个示例中,我只有三个变量 import java.util.ArrayList; import java.util.List; import java.util.Random; public class TestingOutputs { public static void main(String[] args) { bool
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class TestingOutputs {
public static void main(String[] args) {
boolean forever = true, one = true, two = true, three = true;
List<String> outputsList = new ArrayList<String>();
outputsList.add("One");
outputsList.add("Two");
outputsList.add("Three");
while(forever){
String outputsRandom = outputsList.get(new Random().nextInt(outputsList.size()));
while(three) {
if(outputsRandom.equals("Three")) {
System.out.println("This is three");
three = false;
}
while(two) {
if(outputsRandom.equals("Two")) {
System.out.println("This is two");
two = false;
}
}
while(one) {
if(outputsRandom.equals("One")) {
System.out.println("This is one");
two = false;
}
}
}
}
}
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
公共类测试输出{
公共静态void main(字符串[]args){
布尔永远=真,一=真,二=真,三=真;
List outputsList=new ArrayList();
输出列表。添加(“一”);
输出列表。添加(“两”);
输出列表。添加(“三”);
而(永远){
String outputsRandom=outputsList.get(new Random().nextInt(outputsList.size());
而(三){
if(输出随机数等于(“三”)){
System.out.println(“这是三个”);
三=假;
}
而(二){
if(输出随机数等于(“二”)){
System.out.println(“这是两个”);
二=假;
}
}
而(一){
if(输出随机数等于(“一”)){
System.out.println(“这是一个”);
二=假;
}
}
}
}
}
}
首先创建一个从0到字符串数的数字列表
List<Integer> range = IntStream.rangeClosed(0, outputsList.size() - 1)
.boxed().collect(Collectors.toList());
这些数字是随机的,不会重复。
希望这能解决您的问题。首先创建一个从0到字符串的数字列表
List<Integer> range = IntStream.rangeClosed(0, outputsList.size() - 1)
.boxed().collect(Collectors.toList());
这些数字是随机的,不会重复。
希望这能解决您的问题。一种可能的解决方案是克隆您的ArrayList,然后随机输出所选项目,然后将其删除。
在代码中,它将如下所示:
import java.util.ArrayList;
公开课范例{
公共静态ArrayList createList(){
ArrayList listTemp=新的ArrayList();
列表临时添加(“一”);
列表临时添加(“两个”);
列表临时添加(“三”);
返回listTemp;
}
公共静态void main(字符串[]args){
ArrayList listOutputs=createList();
//克隆以不更改原始列表
ArrayList listTemp=(ArrayList)listOutputs.clone();
而(listTemp.size()!=0){
int index=(int)(Math.random()*listTemp.size());
System.out.println(“所选元素:'”+listTemp.get(索引)+'”;
listTemp.remove(索引);
}
}
}
但是,这是一种更干净、更有效的方法,尤其是对于较大的列表。一种可能的解决方案是克隆ArrayList,然后随机输出所选项目,然后将其删除。
在代码中,它将如下所示:
import java.util.ArrayList;
公开课范例{
公共静态ArrayList createList(){
ArrayList listTemp=新的ArrayList();
列表临时添加(“一”);
列表临时添加(“两个”);
列表临时添加(“三”);
返回listTemp;
}
公共静态void main(字符串[]args){
ArrayList listOutputs=createList();
//克隆以不更改原始列表
ArrayList listTemp=(ArrayList)listOutputs.clone();
而(listTemp.size()!=0){
int index=(int)(Math.random()*listTemp.size());
System.out.println(“所选元素:'”+listTemp.get(索引)+'”;
listTemp.remove(索引);
}
}
}
然而,这是一种更干净、更有效的方法,尤其是对于较大的列表