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

Java计算矩阵对角线和时for循环i!=j条件不生效问题求助

问题根源

for 循环的条件块是循环继续执行的必要前提,而非「当前次迭代是否执行累加」的过滤规则,这是你注释代码失效的核心原因。

注释代码的执行流程拆解

你注释的副对角线计算代码,运行逻辑如下:

  • 初始索引 i=0,j=2,判断循环条件:i != j && i < A.length && j >= 0 结果为真,执行累加 A[0][2],随后 i 自增为1,j 自减为1
  • 第二次判断循环条件时,i != j 不成立,整个循环条件返回假,循环直接终止
  • 你需要统计的 A[2][0] 完全没有被遍历到,自然计算结果不符合预期。

你后续写的嵌套 if 的版本逻辑是正确的:循环只要索引在合法范围内就继续执行,每次进入循环后单独判断当前元素是不是重复的中心元素,仅跳过累加不会终止循环,所以能覆盖到 A[2][0] 的统计。


简化写法参考

如果不想在循环里嵌套判断,可以用更简洁的实现:

public class sumDia {
    public static void main(String[] args){
        int[][] A = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}};
        int sum = 0;
        int n = A.length;
        // 同时遍历两条对角线
        for(int i = 0; i < n; i++){
            sum += A[i][i]; // 主对角线元素累加
            sum += A[i][n - 1 - i]; // 副对角线元素累加
        }
        // 奇数阶矩阵减去重复计算的中心元素
        if(n % 2 == 1){
            sum -= A[n/2][n/2];
        }
        System.out.println("Sum of Diagonals is : " + sum);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:18:02