有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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;
    }
}

我只是想知道我错过了什么


共 (5) 个答案

  1. # 1 楼答案

    编译器错误是由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];
    }
    
  2. # 2 楼答案

    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];
    }
    
  3. # 3 楼答案

    您应该看看for需要如何构造

    for (init; stop_condition; actions)
    

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

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

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

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

    你可以写得更简单(因为我和j总是一样的):

    for(int i = 0;i < list.length; i++)
    {
        result[j] = list[i];
    }
    
  4. # 4 楼答案

    第一个图像中的代码将反转数组字段 但这是你的,威尔成功了

    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;
      }
    }
    
  5. # 5 楼答案

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

    例如:

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

    其他选项包括System.arraycopy