等价于java中z中的x,y

问题描述 投票:0回答:2

在python中,您可以将结构for x in [a, b, c, d]用于循环。可以使用Java中的foreach循环来复制。

如果我想在Java中复制for x, y in z循环,例如下面的循环,该怎么办?

for x_off, y_off in ( (1, 2), (-1, 2), (1, -2), (-1, -2), (2, 1), (-2, 1), (2, -1), (-2, -1) ):
    #do something
java python loops for-loop
2个回答
1
投票

我最终只为每个索引使用了变量。但这对于每个内部数组都有大量计数的二维数组将不会有用。

int[][] offsets = new int[][] { {0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1} };

for(int[] offset: offsets) {
    int x = offset[0], y = offset[1];
    // do something with x and y

0
投票

您应该创建一个用于存储三个值的类:

final class Point3D {
    private final int x, y, z;
    // constructor, getters, and equals/hashCode/toString here
}

然后您可以使用带有增强的for循环的数组初始化器:

for (Point3D point : new Point3D[] { new Point3D(1, 1, 1), new Point3D(-1, 1, 1),
                                     new Point3D(-1, -1, 1), new Point3D(1, -1, 1) }) {
    // code here
}

如果单独创建数组,尤其是在有很多要点的情况下,它的读取效果更好:

Point3D[] points = {
        new Point3D( 1,  1,  1), new Point3D(-1,  1,  1),
        new Point3D(-1, -1,  1), new Point3D( 1, -1,  1),
        new Point3D( 1,  1, -1), new Point3D(-1,  1, -1),
        new Point3D(-1, -1, -1), new Point3D( 1, -1, -1)
};
for (Point3D point : points) {
    // code here
}
© www.soinside.com 2019 - 2024. All rights reserved.