gpt4 book ai didi

java - 有没有更好的方法来实现这些嵌套循环?

转载 作者:行者123 更新时间:2023-11-29 09:35:38 24 4
gpt4 key购买 nike

假设有三个数组:

char [] one = {'a','b','c'};
char [] two = {'1','2','3'};
char [] three = {'x','y','z'};

如果我想像这样打印它们:

a 1 x
a 1 y
a 1 z

a 2 x
a 2 y
.....
c 3 z

我必须创建三个嵌套循环;

for(char i : one)
for(char j : two)
for(char k : three)
//.....

假设我有 7 个数组,这将是 7 个嵌套循环。

是否有更好的方法或 API?我知道您可能会问为什么要这样做,这只是思考的问题。

最佳答案

诀窍是使用索引数组。像汽车中的里程表一样更新它们:最不重要的索引然后如果溢出将其设置为零并继续下一个......当没有溢出时,更新完成。继续打印。当最后一个索引溢出时,打印完成。

// Accept an array of character arrays and print a nest
// of their contents.
static void print(char [] [] a) {
int n_arrays = a.length;
int [] indices = new int[n_arrays]; // All set to 0 by java
// Decrement so that first increment is to all zeros. Avoids test for empty arrays.
indices[n_arrays - 1] = -1;
for (int j = 0;;) {
// Increment indices.
for (j = n_arrays - 1; j >= 0; j--) {
if (++indices[j] >= a[j].length) {
indices[j] = 0;
}
else {
break; // No overflow. Increment is complete.
}
}
if (j < 0) {
break; // Last index overflowed. We're done.
}
// Print.
for (int i = 0; i < n_arrays; i++) {
System.out.print(a[i][indices[i]]);
}
System.out.println();
}
}

// Varargs version.
static void printArgs(char [] ... a) {
print(a);
}

static char [] one = {'a','b','c'};
static char [] two = {'1','2','3'};
static char [] three = {'x','y','z'};

public static void main(String[] a) {
print(new char [] [] { one, two, three } );
printArgs(one, two, three);
}

关于java - 有没有更好的方法来实现这些嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com