1

这就是我目前解决在数组对角线上添加元素问题的方法。我尝试了其他一些方法,但我并不满意。我确信应该有一个更聪明的替代方法来使用双循环和if语句。欢迎任何建议。

public SampleClass(){

    private static int nDims = 5;


    public static void main(String args[]){
          identityMatrix(nDims);

     }



    public double[][] identityMatrix(int input1dims){
            int nDims = input1dims;
            double[][] IM = new double[nDims][nDims];
            for (int i=0;i<nDims;i++){
                for (int j=0;j<nDims;j++){
                    if (i==j){
                        IM[i][j]=1;
                    }
                }
            }
            return IM;
   }
}
4

2 回答 2

4

只有在i == j. 这应该告诉您,您只需要其中一个变量。实际上,您只需要其中一个循环,因为您只是在进行nDims操作。

for (int i=0;i<nDims;i++){
    IM[i][i] = 1;
}
于 2013-11-06T00:44:00.663 回答
1

对于简单的对角线,您可以使用单个变量:

for (int i = 0; i < nDims; i++) {
    IM[i][i] = 1;
}

但是如果你想要一个偏移对角线,你可以这样做:

for (int i = 0; j = 1; i < nDims && j < nDims; i++, j++) {
    IM[i][j] = 1;
}
于 2013-11-06T00:48:57.293 回答