java - 需要将多维数组的行打印为列
问题描述
这是我的程序输出:
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;
}
}
解决方案
正如 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) {
推荐阅读
- excel - CSV 到 Excel 不会丢失特殊字符
- json - 使用正则表达式从 json 字符串中提取值
- angular - Angular 通用视图页面源出现在 Mozilla 上,但不在 Chrome 上
- python - CUDA 问题 - 如何在 Win 10 中全新安装 CUDA 以解决 cudaGetDevice() 失败
- c# - 从 URL 加载 AssetBundle
- python - openCV旋转不适用于numpy数组
- react-native - MaterialTopTabNavigator 与其他导航器的性能差异
- ios - 模块映射文件中是否需要“链接框架”行?
- android - 如何将 JSON 解析为 Kotlin 中的类(非标准格式)
- java - 我们如何处理java流中的异常