//求矩阵两个对角线上元素之和:
long sumBothDiagonal(){
long sum = 0;
//判断是否为方阵
for(int i=0;i<data.length;i++)
if(data[i].length!=data.length)
return -1;
//开始结算对角线的元素和
for(int i=0;i<data.length;i++){
for(int m=0;m<data[0].length;m++){
if(m+i==data[0].length-1||m==i)
sum+=data[i][m];
}
}
//如果存在对角线交叉
if((data.length)+1%2==0)
sum-=data[(data.length-1)%2][(data.length-1)%2];
return sum;
}
//将对角线上的值清零
void zeroBothDiagonal(){
//判断是否为方阵
int i=0;
for(;i<data.length;i++)
if(data[i].length!=data.length)
break;
if(i==data.length){
for(int n=0;n<data.length;n++){
for(int m=0;m<data[0].length;m++){
if(m+n==data[0].length-1||m==n)
data[n][m]=0;
}
}
}
}
这是我们这学期的期中考试中的一道题,原题如下:
(1) 求矩阵的两个对角线上元素之和,方法名称sumBothDiagonal。注意如果对角线有交叉,则不重复累计交叉点的值。(注意检查是否为方阵,不是方阵则返回-1)
(2) 将对角线数据清除,即两个对角线上的数据清零。方法名称zeroBothDiagonal。(注意检查是否为方阵,不是方阵则不进行任何操作)