首页 > 解决方案 > 需要将多维数组的行打印为列

问题描述

这是我的程序输出:

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

我希望二维数组的大小为 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;
    }
}

标签: javaarraysmultidimensional-array

解决方案


正如 Sean 在评论中指出的那样,您的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) {

推荐阅读