【问题标题】:Smarter way of entering values in the diagonal of a matrix在矩阵的对角线中输入值的更智能方法
【发布时间】:2013-11-06 00:42:12
【问题描述】:

这就是我目前解决在数组对角线上添加元素问题的方法。我尝试了其他一些方法,但我并不满意。我确信应该有一个更聪明的替代方法来使用双循环和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;
   }
}

【问题讨论】:

    标签: java arrays matrix diagonal


    【解决方案1】:

    你只有在i == j 的情况下才会做某事。这应该告诉您,您只需要其中一个变量。事实上,你只需要其中一个循环,因为你只是在做nDims 操作。

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

    【讨论】:

      【解决方案2】:

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

      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;
      }
      

      【讨论】:

      • +1 表示偏移量。比起公认的答案,我更喜欢这个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2012-04-15
      • 2021-08-08
      • 2016-03-19
      相关资源
      最近更新 更多