对于每个输入(名称、电话号码),我使用随机数生成器将输入分配给一个方法。我的目标是将所有可能的方法组合用于输入。
下面是我的代码。如果我有 1000 个输入和方法怎么办?有没有什么有效的方法来解决这个问题?
public static void main(String[] args) {
for (int i = 0; i < 9; i++) {
Random myRand = new Random();
int randomInteger = myRand.nextInt(10);
if (randomInteger == 0) {
name = methodA();
phoneno = methodA();
} else if (randomInteger == 1) {
name = methodA();
phoneno = methodB();
} else if (randomInteger == 2) {
name = methodB();
phoneno = methodB();
} else if (randomInteger == 3) {
name = methodB();
phoneno = methodA();
} else if (randomInteger == 4) {
name = methodC();
phoneno = methodC();
} else if (randomInteger == 5) {
name = methodC();
phoneno = methodA();
} else if (randomInteger == 6) {
name = methodC();
phoneno = methodB();
} else if (randomInteger == 7) {
name = methodA();
phoneno = methodC();
} else if (randomInteger == 8) {
name = methodB();
phoneno = methodC();
}
}
}
public static String methodA() {
//do something
}
public static String methodB() {
//do something
}
public static String methodC() {
//do something
}
任何帮助将不胜感激。谢谢你
这是一个解决方案...
import java.util.Random;
public class Main {
public static final int FUNCTION_NUMBER = 3;
public static String functionA() {
return "A";
}
public static String functionB() {
return "B";
}
public static String functionC() {
return "C";
}
public static String callFunction(int function_index) {
switch (function_index) {
case 0: return functionA();
case 1: return functionB();
case 2: return functionC();
default: throw new IllegalArgumentException("Incorrect value for function_index");
}
}
public static void main(String[] args) {
Random random = new Random();
int n = random.nextInt((FUNCTION_NUMBER * FUNCTION_NUMBER) - FUNCTION_NUMBER);
int name_function_index = n / FUNCTION_NUMBER;
int phone_no_function_index = n % FUNCTION_NUMBER;
System.out.print(callFunction(name_function_index));
System.out.print(callFunction(phone_no_function_index));
System.out.println("--------------");
}
}
如果要添加其他函数,只需声明它,增加 FUNCTION_NUMBER 常量并在 callFunction 函数中添加一个案例。
所有的工作都在这里完成
int n = random.nextInt(FUNCTION_NUMBER * FUNCTION_NUMBER);
int name_function_index = n / FUNCTION_NUMBER;
int phone_no_function_index = n % FUNCTION_NUMBER;
考虑到您的示例中有 3 个函数,我们有 9 种组合(AA、AB、AC、BA、BB、BC、CA、CB、CC)。n 是一个介于 0 和 8 之间的随机值。
int n = random.nextInt(FUNCTION_NUMBER * FUNCTION_NUMBER);
组合的数量可以分成组。一组名称功能。为此,我们使用除法运算符。因此,对于值 0、1 和 2,组编号为 0(函数 A)。对于值 3、4 和 5,组编号为 1(功能 B),对于值 6、7 和 8。
int name_function_index = n / FUNCTION_NUMBER;
对于电话号码函数,就像我们为每个名称函数(如前面描述的每个组)迭代函数一样。为此,我们使用模运算符。
int phone_no_function_index = n % FUNCTION_NUMBER;
这是每个 n 值的函数索引表。可以看到它代表了所有的功能组合。
n name_function phoneno_function
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
如果你想丢弃重复,你可以使用这个
int n = random.nextInt(FUNCTION_NUMBER * FUNCTION_NUMBER) - FUNCTION_NUMBER;
int name_function_index = n % FUNCTION_NUMBER;
int phone_no_function_index = (n + 1 + (n/4)) % FUNCTION_NUMBER;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句