You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二维数组转置遇数组越界问题:方阵正常非方阵报错(初学者求助)

问题分析
  1. 转置数组初始化错误:原数组是r行c列,转置后的数组应该是c行r列,但你写成了long transpose[][] = new long [r][c];,当r≠c时,必然触发数组越界。
  2. 转置赋值逻辑错误:你用transpose[i][j] = a[j][i]的写法,只适用于方阵的原地转置,非方阵转置需要将原数组的a[i][j]映射到转置数组的transpose[j][i]位置。
  3. 冗余元素交换:代码里的temp交换完全没必要,转置不需要修改原数组,仅需将原数组元素映射到新数组即可。
修正后的代码
import java.util.Scanner;

public class Transpose {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("enter rows and cols: ");
        int r = sc.nextInt();
        int c = sc.nextInt();
        long a[][] = new long[r][c];
        // 转置数组改为c行r列,匹配转置后的维度
        long transpose[][] = new long[c][r];

        System.out.print("enter " + r*c + " elements: ");
        for(int i = 0; i < r; i++){
            for(int j = 0; j < c; j++){
                a[i][j] = sc.nextLong();
            }
        }

        // 打印原数组
        System.out.println("\nOriginal Array:");
        for(int i = 0; i < r; i++){
            for(int j = 0; j < c; j++){
                System.out.print(" " + a[i][j] + " ");
            }
            System.out.println();
        }

        // 执行转置逻辑
        for(int i = 0; i < r; i++){
            for(int j = 0; j < c; j++){
                // 原数组a[i][j]对应转置数组的transpose[j][i]
                transpose[j][i] = a[i][j];
            }
        }

        // 打印转置数组
        System.out.println("\nTransposed Array:");
        for(int i = 0; i < c; i++){
            for(int j = 0; j < r; j++){
                System.out.print(" " + transpose[i][j] + " ");
            }
            System.out.println();
        }
        sc.close();
    }
}
关键修改点说明
  • 转置数组维度:将transpose数组的维度从[r][c]改为[c][r],匹配转置后数组的行列数。
  • 赋值逻辑调整:把transpose[i][j] = a[j][i]改为transpose[j][i] = a[i][j],正确映射原数组元素到转置数组的对应位置。
  • 循环范围修正:打印转置数组时,循环次数改为遍历转置数组的行(c次)和列(r次)。
  • 移除冗余交换:删掉了不必要的temp交换代码,避免修改原数组且简化逻辑。
  • 细节优化:添加了数组打印的标题提示,使用nextLong()替代nextInt()(匹配数组long类型),最后关闭Scanner资源。

内容的提问来源于stack exchange,提问作者akshay patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:45:25