Java 查找数组索引

Java 查找数组索引,java,arrays,Java,Arrays,我肯定有一个CS术语来描述我试图完成的事情,但我不确定它是什么。我有三个数组,我们称它们为a,b,和c。我正在迭代所有可能的数组组合,这将是a*b*c迭代 我正在传递当前迭代的函数anint(例如iteration从0到a*b*c-1),以及a、b和c的长度。我希望该函数能够打印出索引的每个唯一排列,仅根据迭代计数和a、b和c的长度进行计算 这就是我现在拥有的: class Test { public static void printIndices(int i, int a, int

我肯定有一个CS术语来描述我试图完成的事情,但我不确定它是什么。我有三个数组,我们称它们为
a
b
,和
c
。我正在迭代所有可能的数组组合,这将是
a*b*c
迭代

我正在传递当前迭代的函数an
int
(例如
iteration
0
a*b*c-1
),以及
a
b
c
的长度。我希望该函数能够打印出索引的每个唯一排列,仅根据迭代计数和
a
b
c
的长度进行计算

这就是我现在拥有的:

class Test {
    public static void printIndices(int i, int a, int b, int c) {
        System.out.println(i%a + ", " + (i+1)%b + ", " + (i+2)%c);
    }

    public static void main(String[] args) {
        int a[] = new int[2];
        int b[] = new int[2];
        int c[] = new int[3];

        int iterations = a.length * b.length * c.length;

        for (int i=0; i < iterations; i++){
            printIndices(i, a.length, b.length, c.length);
        }
    }
}
正如你所看到的,有重复的。我希望输出为:

0, 0, 0
1, 0, 0
0, 1, 0
1, 1, 0
0, 0, 1
1, 0, 1
0, 1, 1
1, 1, 1
0, 0, 2
1, 0, 2
0, 1, 2
1, 1, 2
(顺序并不重要,只要每个排列都没有重复)

显然,我的输出行是错误的:

System.out.println(i%a + ", " + (i+1)%b + ", " + (i+2)%c);
什么是获得我想要的输出的正确操作


我知道这段代码看起来有点傻,而且根本不是我真正在做的事情,但它很好地说明了这一点。

正如您正在查找的注释中所述

你的模块化算法几乎可以奏效。只需进行几次修改即可获得正确的结果:

System.out.println(i%a + ", " + (i/a)%b + ", " + (i/a/b)%c);

在线查看它的工作情况:

如您要查找的评论中所述

你的模块化算法几乎可以奏效。只需进行几次修改即可获得正确的结果:

System.out.println(i%a + ", " + (i/a)%b + ", " + (i/a/b)%c);

在线查看它的工作情况:

这叫做a。谢谢。我知道这一定有个词。这叫a。谢谢。我知道一定有个词来形容它。