@Supercool. уже оставил идеальный ответ.
Но, по вашему мнению, я пытался выяснить , есть ли лучший способ визуализации, чем вложенные циклы for , и я нашел способ " рекурсивного вызова "
Используя 'double array
' и 'recursive
',
, хотя вы добавьте новый массив, вам не нужно писать дополнительный для -l oop.
Как это
public class StackOver
{
static String[][] array = {{"this","that"},
{"is","was"},
{"cool","lame"},};
public static void recString(String[][] a, int index, String output) {
//make break-point
if(index == a.length) { //if 'index' reached to the end of array 'a'?
System.out.println(output); //print out string 'output' that collected so far
//output should be = (a[0][?] + a[1][?] +...+ a[length-1][?])
return; //And end the method.
}
// if 'index' didn't reach to the end of array ::
//If there's an array that hasn't been explored yet,
for(int i = 0; i < a[index].length; i++) {
recString(a, index+1, output + a[index][i]);
//Add 1 to 'index' and add String out put that added '[index][i]'
//as parameters and call this method again.
//This form is called recursive call!
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String t = "";
recString(array,0,t);
}
}
Даже при изменении массива с помощью рекурсивных вызовов вы можете исследовать каждый массив без изменения кода и рисовать возможные комбинации.
Ex).
static String[][] array = {{"I","You","They"},
{"love","hate"},
{"me","you"},
{"too","either"},};
Ну, грамматика немного неловкая, но это пример растягивания аранжировки немного дольше.