For each of the inputs (name, phoneno), I am using Random Number Generator to assign the inputs to a method. My goal is to get all possible combinations of methods to an input.
Below are my codes. What if I have 1000 of inputs and methods? Is there any efficient way to this this?
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
}
Any help will be appreciated. Thank You
Here is a solution...
If you want to add an other function, just declare it, increment the FUNCTION_NUMBER constant and add a case in the callFunction function.
All the job is done here
Considering that you have 3 functions in your example, we have 9 combinations (AA, AB, AC, BA, BB, BC, CA, CB, CC). n is a random value between 0 and 8 included.
The number of combinations can be splitted in groups. One group for one name function. To do that we use the division operator. So, for the values 0, 1 and 2 the group number is 0 (functionA). For the values 3, 4 and 5 the group number is 1 (functionB) and for the value 6, 7 and 8.
For the phone number function, it's like we iterate over the functions for each name function (for each group like described previously). To do that we use the modulo operator.
Here is a table of the functions indexes for each value of n. You can see that it represents all the functions combinations.
n name_function phoneno_function
If you want to discard the duplications, you can use this
You could use a switch statement
Store your methods in an array and take a random array element for each of name and phone number. It’s probably easiest using a functional interface, so let’s first declare
I am assuming your methods return strings, but any other type will work too.
With the above interface you can do for example:
Example output:
In this particular run
LocalTime.now
happened to be used for both name and number. I wanted to show this one to you because the times are not exactly the same since the method was called twice in succession.So just put 1000 methods into your array.