Java二维矩阵打印行求和、列求和功能实现问题求助
问题原因
- 列求和的数组索引写反:外层循环遍历列下标
i,内层遍历行下标j,取值应该是twoD[j][i],原写法会导致数组越界或计算结果错误 - 缺少行求和计算、行末总和输出逻辑,也没有打印矩阵底部的分隔线
- 空格填充不规范,用格式化输出可以更便捷的实现对齐效果
修正后完整代码
package Matrix; import java.util.Scanner; public class Matrix { public static void main(String[] args) { System.out.print("Enter 2D array size : "); Scanner sc=new Scanner(System.in); int rows=sc.nextInt(); int columns=sc.nextInt(); System.out.println("Enter array elements : "); int twoD[][]=new int[rows][columns]; // 读取矩阵元素 for(int i=0; i<rows;i++) { for(int j=0; j<columns;j++) { twoD[i][j]=sc.nextInt(); } } System.out.print("\n\n"); // 逐行输出矩阵+行总和 for(int []x:twoD){ int rowSum = 0; for(int y:x){ // 左对齐占6个字符宽度,保证对齐 System.out.printf("%-6d", y); rowSum += y; } System.out.printf("= %d%n", rowSum); } // 打印分隔线 System.out.println("___________"); // 计算输出列总和 for(int i=0;i<columns;i++) { int colSum = 0; for(int j=0;j<rows;j++) { // 索引修正,行在前列在后 colSum += twoD[j][i]; } System.out.printf("%-6d", colSum); } } }
输入3行3列的矩阵元素5 9 8 3 8 2 4 3 9,即可输出你预期的格式效果。
内容的提问来源于stack exchange,提问作者EC1
相关产品推荐
相关产品推荐

