我有四个数组,每个数组有 3 个(但可以更多)元素。我试图用每个元素的所有可能组合填充 4 x aa.length*bb.length*cc.length*dd.length 数组。我试图用嵌套的 for 循环来做到这一点,但我的逻辑是错误的。我不确定最有效的方法是什么。 这就是我的咖啡因饥饿的大脑到目前为止所想出的。
String[] AA={DDDD, HHHH, ZZZZ};
String[] BB={DDDD, HHHH, ZZZZ};
String[] CC={DDDD, HHHH, ZZZZ};
String[] DD={DDDD, HHHH, ZZZZ};
String[][] 2Darray = new String[4][AA.length*BB.length*CC.length*DD.length];
for (int i = 0; i <AA.length; i++){
for (int j = 0; j < BB.length; j++){
for (int k = 0; k < CC.length; k++){
for (int L = 0; L < DD.length; L++){
2Darray[3][i+j+k+L] = DD[L];
2Darray[2][i+j+k] = CC[k];
2Darray[1][i+j] = BB[j];
2Darray[0][i] = AA[i];
}
}
}
}
打印输出如下所示:
DDDD DDDD DDDD DDDD
HHHH DDDD DDDD DDDD
ZZZZ DDDD DDDD DDDD
null HHHH DDDD DDDD
null ZZZZ DDDD DDDD
null null HHHH DDDD
null null ZZZZ DDDD
null null null HHHH
null null null ZZZZ
null null null null
null null null null
null null null null
...etc
有什么更好的方法来解决这个问题?
最佳答案
试试这个
String[] AA = {"DDDD", "HHHH", "ZZZZ"};
String[] BB = {"DDDD", "HHHH", "ZZZZ"};
String[] CC = {"DDDD", "HHHH", "ZZZZ"};
String[] DD = {"DDDD", "HHHH", "ZZZZ"};
String[][] result = new String[4][AA.length * BB.length * CC.length * DD.length];
int row = 0;
for (int i = 0; i < AA.length; i++) {
for (int j = 0; j < BB.length; j++) {
for (int k = 0; k < CC.length; k++) {
for (int L = 0; L < DD.length; L++) {
result[3][row] = DD[L];
result[2][row] = CC[k];
result[1][row] = BB[j];
result[0][row] = AA[i];
System.out.println(result[0][row] + " " +result[1][row] + " " +result[2][row] + " " +result[3][row]);
row++;
}
}
}
}
和输出
DDDD DDDD DDDD DDDD
DDDD DDDD DDDD HHHH
DDDD DDDD DDDD ZZZZ
DDDD DDDD HHHH DDDD
DDDD DDDD HHHH HHHH
DDDD DDDD HHHH ZZZZ
DDDD DDDD ZZZZ DDDD
...
关于java - 使用嵌套 for 循环填充多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011832/