矩阵每行正数求和生成数组:首列负数误计入的代码修复求助
修复矩阵每行正数求和的代码问题
问题:需要生成一个由矩阵每行正数之和组成的数组,但现有JavaScript代码会将首列的负数也计入求和结果。
原代码存在的问题
- 初始化求和变量
posSum时,直接赋值为当前行的首列元素myArray[i][0],无论该元素是否为正数,导致负数被直接计入总和 - 外层循环条件使用
myArray[0].length,逻辑上应遍历矩阵的行数(myArray.length),保证代码对不同行数的矩阵都适用 - 内层循环仅从
j=1开始遍历,没有统一判断所有元素的正负性
修复后的完整代码
<!DOCTYPE html> <html> <head> <title>Document</title> </head> <body> <div id="result-container"></div> <script> let myArray = []; // 生成3x3的随机矩阵,元素范围-9到10 for (let i = 0; i < 3; i++) { myArray[i] = []; for (let j = 0; j < 3; j++) { myArray[i][j] = Math.floor(Math.random() * 20 - 10) + 1; } } let output = JSON.stringify(myArray) + "<br>"; console.log(myArray); let F = []; // 遍历矩阵的每一行 for (let i = 0; i < myArray.length; i++) { let posSum = 0; // 初始化求和为0 // 遍历当前行的所有元素 for (let j = 0; j < myArray[i].length; j++) { if (myArray[i][j] > 0) { posSum += myArray[i][j]; } } F.push(posSum); } output += `Array F: ${F}`; console.log(F); document.getElementById('result-container').innerHTML = output; </script> </body> </html>
修复说明
- 将
posSum初始值设为0,避免直接引入非正数元素 - 外层循环改为遍历矩阵的行数
myArray.length,提升代码通用性 - 内层循环从
j=0开始,对当前行的所有元素进行正负判断,仅累加正数
内容的提问来源于stack exchange,提问作者MihaVar
相关产品推荐
相关产品推荐

