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

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 に答える