【发布时间】:2018-03-05 22:42:51
【问题描述】:
我找到了一个打印字符串所有组合的解决方案。下面的代码将输出:
丰田黑色轿车
本田黑色轿车
丰田红色轿车
本田红色轿车
丰田黑色 SUV
本田黑色 SUV
丰田红色 SUV
本田红色 suv
String[][] sets = new String[][] {{"Toyota", "Honda"}, {"black", "red"}, {"sedan", "suv"}};
int[] state = new int[sets.length];
int p = 0;
while (true) {
for (int i = 0; i < state.length; i++) {
System.out.print(sets[i][state[i]] + " ");
}
System.out.println();
state[p]++;
while(state[p] == sets[p].length) {
state[p] = 0;
p++;
if (p == sets.length) return;
state[p]++;
}
p = 0;
}
谁能详细解释一下第二个while循环在做什么?
【问题讨论】:
-
state的条目是sets的子数组的索引,表示来自那些子数组的字符串,这些子数组构成了正在生成的当前组合。第二个循环推进state中的索引以挑选下一个组合
标签: java arrays for-loop while-loop