矩阵行求和程序返回零值问题排查求助
问题分析与修复
你的代码存在三个核心问题,直接导致返回零值且循环不执行:
- 覆盖输入矩阵:方法内的
input = new int[rows, columns];会重新创建一个全0的数组,完全覆盖了传入的原始矩阵,求和自然都是0,这行必须删除。 - 循环条件错误:外层循环
for(int i = 0; i >= rows; i++)的条件i >= rows从一开始就不成立(初始i=0,rows至少为1),循环直接跳过;内层循环j >= columns同理,根本不会执行。正确条件应为i < rows和j < columns。 - 每行求和未重置sum:如果不在每行循环前重置sum,后续行的和会累加前面所有行的结果,导致计算错误,需要将sum的声明移到外层循环内部,每次处理新行时重置为0。
修复后的代码
public class Row_summer { public int[] summ(int[,] input, int rows, int columns) { int[] sum_of_rows = new int[rows]; for(int i = 0; i < rows; i++) { int sum = 0; // 每行循环前重置求和变量 for(int j = 0; j < columns; j++) { sum += input[i, j]; } sum_of_rows[i] = sum; } return sum_of_rows; } }
内容的提问来源于stack exchange,提问作者sina
相关产品推荐
相关产品推荐

