Java 数组迭代器



这是我在网上找到的示例(我修改了它(使用返回数组的方法。正在传递的数组以相反的顺序迭代为新数组。

public class MultDim {
    public static void main(String[] args)
    {
        double[] myList = {1.9, 2.9, 3.4, 3.5};
        double[] returned = returnArr(myList);
        for (double elem : returned) {
            System.out.println(elem);
        }
    }
    public static double[] returnArr(double[] list) {
        double[] result = new double[list.length];
        for (int i = 0, j = list.length - 1; i < list.length; i++, j--) {
            result[j] = list[i];
        }
        return result;
    }
}

我想要的是将传递给方法的数组元素传递给方法,使其在返回的数组中具有相同的顺序。这是我试图解决它的方式。但是 is 返回一个错误,即(list.length 的基元类型 int 没有字段 i(

public class MultDim {
    public static void main(String[] args) {
        double[] myList = {1.9, 2.9, 3.4, 3.5};
        double[] returned = returnArr(myList);
        for (double elem : returned) {
            System.out.println(elem);
        }
    }

    public static double[] returnArr(double[] list) {
        double[] result = new double[list.length];
        for (int i = 0, j = 0; j < list.length, i < list.length; i++, j++) {
            result[j] = list[i];
        }
        return result;
    }
}

只是想知道我的概念错过了什么。

for循环中的停止条件不能这样写

for(int i = 0, j = 0; j < list.length, i < list.length; i++, j++)

在这种情况下,一个简单的

for(int i = 0, j = 0; i < list.length; i++, j++)

足够好了

或只是:

for(int i=0; i<list.length; i++){
     result[i] = list[i];
}

编译器错误是由于for循环中的条件造成的。 j < list.length, i < list.length是无效条件。如果你的意思是j < list.lengthi < list.length,那么使用逻辑 AND 运算符 ( && (:

j < list.length && i < list.length

话虽如此,您不需要在循环中使用 ij,因为返回的数组与作为参数传递的数组具有相同的大小。所以你可以做:

for (int i = 0; i < list.length; i++) {
    result[i] = list[i];
}

你应该看看for需要如何构建

for (init; stop_condition; actions)

init可以是java初始化的列表,用逗号(,(分隔

stop_condition需要是一个计算结果为布尔值的 Java 表达式,在您的情况下,它应该是:

j < list.length && i < list.length

动作可以是 Java 表达式的列表,用逗号 ( , ( 分隔

你可以写更简单(因为 i 和 j 总是相同的(:

for(int i = 0;i < list.length; i++)
{
    result[j] = list[i];
}
第一个

图像中的代码将反转数组字段但这是你的,会奏效的!

public class MultDim {
 public static void main(String[] args) {
    double[] myList = {1.9, 2.9, 3.4, 3.5};
    double[] returned = returnArr(myList);
    for (double elem : returned) {
        System.out.println(elem);
    }
}

 public static double[] returnArr(double[] list) {
    double[] result = new double[list.length];
    for (int i = 0, j = 0; j < list.length && i < list.length; i++, j++) {
        result[j] = list[i];
    }
    return result;
  }
}

要解决实际问题 - 如何复制数组数据,您可能应该使用 Java 库提供的函数。

例:

final double[] copy1 = Arrays.copyOf(myList, myList.length);

其他选项包括System.arraycopy。

最新更新