因此,我希望随机化某些方法的调用方式,以便每个实例仅调用一次每个方法,并且调用每个方法。
所以说一个实例,它们按顺序被调用:
方法2 方法4 方法3 方法1
但在下一个实例中,它们会以不同的顺序调用:
方法3 方法2 方法1 方法4
我必须随机化顺序的代码如下所示:
public void randomCalls(){
int[] order = new int[4];
for(int i=0; i<order.length; i++){
order[i]=nextNumber(order);
}
}
public int nextNumber(int[] array){
Random r = new Random();
int x = r.nextInt();
for(int i=0; i<array.length; i++){
if(arrayHasNumber(array,x)){
x = nextNumber(array);
}
}
return x;
}
public boolean arrayHasNumber(int[] array, int x){
for(int i=0;i<array.length;i++){
if(array[i]==x){
return true;
}
}
return false;
}
最佳答案
根据@Aurand的建议,您可以有一个开关来调用您的方法和 List<Integer>
它将包含您要调用的方法的索引,然后使用 Collections.shuffle
对列表元素进行打乱并调用 switch
调用你的方法。代码示例:
final int METHODS_QUANTITY = 4;
List<Integer> lstIndexes = new ArrayList<Integer>();
for(int i = 1; i <= METHODS_QUANTITY; i++) {
lstIndexes.add(i);
}
//you can change the condition for the number of times you want to execute it
while(true) {
Collections.shuffle(lstIndexes);
for(Integer index : lstIndexes) {
switch(index) {
case 1: method1(); break;
case 2: method2(); break;
case 3: method3(); break;
case 4: method4(); break;
}
}
}
仍然存在问题:为什么在现实世界的应用程序中需要这个?
关于java - 以随机唯一顺序调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674592/