是否可以同时运行两个for循环?

时间:2018-09-29 19:44:03

标签: java

我试图获得2d方阵对角线元素的差异

28  52
80  66   
7   18    
97  68

1 个答案:

答案 0 :(得分:3)

开始担心并行运行循环之前,请担心编写简单的正确代码。

例如:

for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
        if(i==j){
            left=left+arr[i][j];
        }
    }
}

这些嵌套循环将运行n*n次。但是,只有在i==j时您才做任何事情;因此您会因循环而浪费精力。只需删除内部循环,然后使用:

for(int i=0;i<n;i++){
  left += arr[i][i];
}

仅进行n次迭代:不仅代码更简单,而且速度更快。

那效率低下;您的其他循环实际上是错误的:

for(int i=0,int j=n;i<n;i++,j--){
    right=right+arr[i][j];
}

除语法错误外,这将在第一次迭代时失败,并以ArrayIndexOutOfBoundsException出现,大概是因为arr[i].length == n,但是是j == n。因此,初始化j=n-1

无论如何,您这里不需要单独的循环:

for(int i=0, j=n-1;i<n;i++, j--){
  left += arr[i][i];
  right += arr[i][j];
}

仅需一个循环,就无需尝试使循环同时运行。