有 Java 编程相关的问题?

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

java请告诉我我的代码出了什么问题?!!需要将2D阵列转换为并排1D阵列

public static void main(String[] args) {
    int[][] arr = {{2, 3, 4}, {3, 4, 5, 2}};
    System.out.println(line(arr));
}

public static int[] line(int[][] arr) {
    int size = 0;
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            size++;
        }
    }
    int[] array = new int[size];
    int place = 0;
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            array[place] = arr[i][j];
            place++;
        }
    }
    return array;
}

我得到的厄洛尔是

----jGRASP exec:java问题 [I@15db9742

----jGRASP:操作完成


共 (3) 个答案

  1. # 1 楼答案

    每个对象都有一个toString()方法,默认方法是显示对象的类名表示,然后是“@”,后面是它的hashcode。所以你看到的是int array的默认toString()表示。要打印数组中的数据,可以使用

    System.out.println(java.util.Arrays.toString(line(arr)));
    

    或者你可以像这样用for循环遍历数组

    int [] res = line(arr);
    for(int i=0;i<res.length;i++){
    System.out.println(res[i]);
    }
    
  2. # 2 楼答案

    就我所知,它正在发挥作用:

    public static void main(String[] args) {
        int[][] arr = {{2, 3, 4}, {3, 4, 5, 2}};
        int[] i = line(arr);
        Arrays.stream(i).forEach(x -> System.out.println(x + ""));
    }
    
    public static int[] line(int[][] arr) {
        int size = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                size++;
            }
        }
        int[] array = new int[size];
        int place = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                array[place] = arr[i][j];
                place++;
            }
        }
        return array;
    }
    

    唯一的问题是,当你写出结果时,你得到的是对象引用,而不是纯文本的数组

    2
    3
    4
    3
    4
    5
    2
    
    Process finished with exit code 0
    
  3. # 3 楼答案

    import java.util.Arrays;
    
    public class TEst {
        public static void main(String[] args) {
            int[][] arr = { { 2, 3, 4 }, { 3, 4, 5, 2 } };
            System.out.println(Arrays.toString(line(arr)));
        }
    
        public static int[] line(int[][] arr) {
            int size = 0;
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    size++;
                }
            }
            int[] array = new int[size];
            int place = 0;
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    array[place] = arr[i][j];
                    place++;
                }
            }
            return array;`enter code here`
        }
    }