这就是我目前解决在数组对角线上添加元素的问题。我尝试了其他一些方法,但我并不满意。我确信应该有一个更聪明的替代方法来使用双循环和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;
}
}
答案 0 :(得分:4)
只有i == j
才能执行某些操作。那应该告诉你,你只需要其中一个变量。实际上,您只需要其中一个循环,因为您只进行nDims
次操作。
for (int i=0;i<nDims;i++){
IM[i][i] = 1;
}
答案 1 :(得分: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;
}