java - For循环在java中不起作用的条件
问题描述
我正在尝试计算矩阵对角线的总和。但它排除了一个元素。我使用 if-else 解决了我的问题,但我不明白为什么 for-loop 不起作用。请帮忙 !
public class sumDia {
public static void main(String[] args){
int[][] A = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}};
int i, j;
int sum = 0;
for(i = 0, j = 0; i == j && j < A.length; i++, j++) sum += A[i][j];
// for(i = 0, j = A.length - 1; i != j && i < A.length && j >= 0; i++, j--) sum += A[i][j];
// ( i != j ) Not Working... I don't know why
for(i = 0, j = A.length - 1; i < A.length && j >= 0; i++, j--){
if(i != j){
sum += A[i][j];
}
}
System.out.println("Sum of Diagonals is : " + sum);
}
}
对角线:[0][0] , [1][1] , [2][2] and [0][2] , [1][1] , [2][0]
。在第二对角线[1][1]
重复这就是为什么我使用 ( i != j
)删除它
注意:注释 for 循环中的问题
解决方案
i != j
为什么这是在for循环条件下?
对角元素索引是[0][0],[1][1],[2][2]
和[0][2],[1][1],[2][0]
。
第 2 条对角线具有[1][1]
i==j,因此i != j
在第 2 次迭代中条件为假,并将退出 for 循环,该循环忽略第 2 和第 3 个元素。
推荐阅读
- gitlab-ci - 如何在 gitlab runner 中使用个人 github 访问令牌
- django - url查询中的Django自定义排序
- react-native - 是否可以更改每个屏幕的反应堆栈导航器平移手势方向?
- python - 尝试安装 keras 后无法使用 anaconda 提示符
- javascript - 检查不和谐角色是否高于另一个角色
- angular - Angular - 在输入字段中转换为小写
- python - BeautifulSoup 测试对象类型
- angular - Angular - SpringBoot - CORS(未知 url):0 未知错误
- url - Readiness 和 Liveness Probe Endpoints 的 URL 应该是什么?
- java - 在 Jenkins 中运行 maven 时出现 ClassNotFoundException