需要将多维数组的行打印为列

时间:2019-06-10 23:26:35

标签: java arrays multidimensional-array

这是我的程序输出:

Enter the size of 2D array: 
4
1   2   3   4   

5   6   7   8   

9   10  11  12  

13  14  15  16

而我需要这个:

1    12    5    16
2    11    6    15
3    10    7    14
4    9     8    13

我希望2d数组的大小为NxN,其中n是用户输入的整数。我希望第一个连续的值从上到下存储在偶数索引列中,而下一个连续的值从下到上存储在奇数索引列中。

import java.util.Scanner;

public class Lab6 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter the size of 2D array: ");
    System.out.println();
    int n = input.nextInt();

    int arr[][] = new int[n][n];

    int inc=1;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
        arr[i][j]=inc;
        inc++;
        }
    }

    transpose(arr);

    // now let's print a two dimensional array in Java
    for (int[] a : arr) {
        for (int i : a) {
            System.out.print(i + "\t");
        }
        System.out.println("\n");

    }
}
public static int[][] transpose (int[][] array) {
      if (array == null || array.length == 0)//empty or unset array, nothing do to here
        return array;

      int width = array.length;
      int height = array[0].length;

      int[][] array_new = new int[height][width];

      for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
          array_new[y][x] = array[x][y];
        }
      }
      return array_new;
    }
}

2 个答案:

答案 0 :(得分:2)

正如肖恩在评论中指出的那样,您的transpose()函数返回一个新数组,但您没有捕获并使用它。原始数组保持不变,这就是最后显示的内容。

更改:

transpose(arr);

// now let's print a two dimensional array in Java
for (int[] a : arr) {

收件人:

int[][] newArr = transpose(arr);

// now let's print a two dimensional array in Java
for (int[] a : newArr) {

答案 1 :(得分:1)

尝试一下。它应该执行您在问题中描述的内容。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter the size of 2D array: ");
    System.out.println();
    int n = input.nextInt();
    int arr[][] = new int[n][n];

    int inc=1;
    for(int j = 0; j < n; j += 2) {
        for(int i = 0; i < n; i++) {
            arr[i][j]=inc++;
        }
    }
    for(int j = 1; j < n; j += 2) {
        for(int i = n - 1; i >= 0; i--) {
            arr[i][j]=inc++;
        }
    }

    // now let's print a two dimensional array in Java
    for (int[] a : arr) {
        for (int i : a) {
            System.out.print(i + "\t");
        }
        System.out.println();
    }
}