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

如何用JOptionPane对话框格式化打印二维数组及行列和

解决二维数组输出格式问题

核心问题

你的代码输出格式混乱的原因:

  1. 拼接输出字符串时未添加换行符,所有内容连成一行;
  2. 制表符\t的对齐效果不稳定,不同长度的数字会导致排版错位;
  3. 分隔线与列和之间没有换行,导致列和紧接在分隔线后。

修复后的完整代码

import javax.swing.JOptionPane;

public class TwoDimensional_Array {
    public static void main(String[] args) {

        String output = "";

        int[][] num = new int[3][3];
        int[] rowSum = new int[3]; // 重命名为行和,更直观
        int[] colSum = new int[3]; // 重命名为列和
        
        System.out.println("\n3 by 3 Array - Enter Matrix Elements.");

        // 输入矩阵元素
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                String input = JOptionPane.showInputDialog(null, "Enter elements in pockets ["+ i +"]["+ j +"]:", "3 by 3 - Two-Dimensonal Array", JOptionPane.PLAIN_MESSAGE);
                num[i][j] = Integer.parseInt(input);
            }
        }
        
        // 计算行和与列和
        for(int i = 0; i < 3; i++) {    
            for(int j = 0; j < 3; j++) {
                rowSum[i] += num[i][j];
                colSum[j] += num[i][j];
            }
        }

        // 拼接每行元素+行和,添加换行
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                // 格式化固定宽度左对齐,保证排版整齐
                output += String.format("%-8d", num[i][j]);
            }
            // 行和部分格式化,添加换行符
            output += String.format("=  %d%n", rowSum[i]);
        }
        
        // 添加分隔线并换行
        output += "__________________________%n".formatted();
        
        // 拼接列和,固定宽度对齐
        for(int i = 0; i < 3; i++) {
            output += String.format("%-8d", colSum[i]);
        }
        
        JOptionPane.showMessageDialog(null, output, "Two-Dimensional Array", JOptionPane.PLAIN_MESSAGE);
    }
}

关键修改说明

  • 强制换行:使用%n(Java推荐的跨平台换行符),在每行结束、分隔线后添加换行,确保内容按预期分行显示;
  • 固定宽度格式化:用String.format("%-8d", ...)实现左对齐的固定宽度输出,替代不稳定的制表符\t,保证所有元素和求和结果对齐整齐;
  • 变量名优化:将sum改为rowSum、sum1改为colSum,提升代码可读性;
  • 规范常量:用JOptionPane.PLAIN_MESSAGE替代魔法值-1,代码更易维护;
  • 列和计算优化:调整为更直观的累加方式(colSum[j] += num[i][j]),和行和的计算逻辑保持一致,便于理解。

最终输出效果

运行后会生成和你期望完全一致的规整格式:

5       9       8       =  22
3       8       2       =  13
4       3       9       =  16
__________________________
12      20      19      

内容的提问来源于stack exchange,提问作者Code Apollo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:50:28