Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-遍历3个不同数组长度的变量_Java_Loops_Iteration - Fatal编程技术网

Java-遍历3个不同数组长度的变量

Java-遍历3个不同数组长度的变量,java,loops,iteration,Java,Loops,Iteration,我正在尝试迭代下面的伪代码设置,我似乎只能使用for循环和大小写区分。有没有一个简单的方法来解决这些问题 编辑:更清楚地说,我有两个二维双坐标数组,这样我有PunkteX[I][m]和PunkteY[I][m]。这两个数组的长度始终相同,但整数i和m是可变的。我想对它们进行循环,以便将它们组合成Point2D[p]类型的新二维数组。Point2D数组的长度将由i和m决定 int i = punkteX.length; // same as punkteY.length; int m = punk

我正在尝试迭代下面的伪代码设置,我似乎只能使用for循环和大小写区分。有没有一个简单的方法来解决这些问题

编辑:更清楚地说,我有两个二维双坐标数组,这样我有PunkteX[I][m]和PunkteY[I][m]。这两个数组的长度始终相同,但整数i和m是可变的。我想对它们进行循环,以便将它们组合成Point2D[p]类型的新二维数组。Point2D数组的长度将由i和m决定

int i = punkteX.length; // same as punkteY.length;
int m = punkteX[0].length;  // same as punkteY[0].length;
Point2D[] array = new Point2D[i*m];

array[0] = (punkteX[0][m], punkteY[0][m]);
array[1] = (punkteX[1][m], punkteY[1][m]);    
array[2] = (punkteX[2][m], punkteY[2][m]);
.
.
array[i-1] = (punkteX[i-1][m], punkteY[i-1][m]);
array[i]   = (punkteX[i][m], punkteY[i][m]);
array[i+1] = (punkteX[0][m-1], punkteY[0][m-1]);
array[i+2] = (punkteX[1][m-1], punkteY[1][m-1]);
array[i+3] = (punkteX[2][m-1], punkteY[2][m-1]);
.
.
array[p-1] = (punkteX[i-1][0], punkteY[i-1][0]);
array[p] = (punkteX[i][0], punkteY[i][0]);
为了完整起见,我的尝试似乎只适用于i=3,如下所示:

    for (int p = 0; p < array.length; ++p) {
        for (int m = 0; m < mtimes; ++m) { // mtimes = column length of PointX and PointY Arrays
        Point2D[] interimarray = new Point2D[n]; // Global var n = i
        for (int i = 0; i < interimarray.length; ++i) {
            p = (p+i); 
            if (i == (interimarray.length-1)) { p -= 1; }
            if (p < (array.length)) {
                array[p] = new Point2D(xArray[i][(mtimes-m-1)], yArray[i][(mtimes-m-1)]);}
            if ((p!= 0) && (i==(n-1))) { p += 1; }}}}
for(int p=0;p
这是我的解决方案:

public class Test {

    private final static int P = 20;
    private final static int M = 4;

    public static void main(String[] args) {

        int m = 5;
        int i = 0;

        for (int p=0; p < P; p++)
        {
            if (p % M == 0)
            {
                m--;
                i = 0;
            }
            System.out.println ("p = " + p +" i = " + i  +" m = " + m );
            i++;

        }
    }

}
公共类测试{
私有最终静态int P=20;
私有最终静态int M=4;
公共静态void main(字符串[]args){
int m=5;
int i=0;
for(int p=0;p
这个怎么样

int m = mtimes;
int p = 0;
while (m >= 0) {
    int itimes = ...; //row length;
    for (int i = 0; i < itimes; i++) {
        // 
        p++;
    }

    m--;
}   
int m=mtimes;
int p=0;
而(m>=0){
int itimes=…;//行长度;
for(int i=0;i
这对我来说仍然很困惑,但这将生成您正在寻找的配置。p索引总是随着i数组的每次迭代而增加,因此您可以在该循环中执行p++操作。除此之外,它只是一个嵌套的for循环

int p = 0;
for(int m = mArray.length - 1; m >= 0; m--) {
    for(int i = 0; i < iArray.length; i++) {
        System.out.println("p = " + p + ", i = " + i + ", m = " + m);
        p++;
    }
}

旁白:在Java中,不要在变量名前面使用大写,这会使它们看起来像类名。好的代码约定会让人们更愿意帮助你,因为它更容易阅读。

你最好解释一下你试图在这个伪代码中实现什么-你想做什么并不明显。是的,这非常令人困惑。我不知道你在这里想干什么。您是否有一个数据结构,并试图在其中导航?或者您正在尝试创建一个数据结构并在其中导航?还应该补充一点,它有被关闭的风险,因为它是多么的不清楚。因此,您想要生成具有可变行数和列数的二维数组或其他什么?我添加了一些规范,这个问题现在有意义了吗?谢谢你提供了一个工作示例,特别是额外的输入!我仍然需要研究并以某种方式整合所有想法,但这非常有用。
int mArrayLength = punkteX[0].length;
int iArrayLength = punkteX.length;
Point2D[] point2DArray = new Point2D[mArrayLength];
int p = 0;
for(int m = 0; m < mArrayLength; m++) {
    for(int i = 0; i < iArrayLength; i++) {
        point2DArray[p] = new Point2D(punkteX[i][m], punkteY[i][m]);
        p++;
    }
}

public class Point2D {
    private double[] punkteX;
    private double[] punkteY;

    public Point2D(double[] punkteX, double[] punkteY) {
        this.punkteX = punkteX;
        this.punkteY = punkteY;
    }

    public double[] getPunkteX() {
        return punkteX;
    }

    public double[] getPunkteY() {
        return punkteY;
    }
}
double[] punkteXValue = point2DArray[0].getPunkteX();
double[] punkteYValue = point2DArray[0].getPunkteY();