从网上找到一份编程练习题,我决定将里面的题目全都做一遍。 |
/*
题目:求一个3*3矩阵对角线元素之和
*/
/*
分析:题目没有给定 3*3矩阵的数据,那么我们就还是使用Random生成一组1~100之内的数据。
矩阵,用二维数组表示。矩阵有两条对角线,都要计算。
这里我写了一个duiJiaoXianQiuHe()用于计算奇数阶矩阵对角线元素之和。
*/
import java.util.Random;
class JuZhenDuiJiaoXianQiuHe {
public static void main(String[] args) {
int[][] arr=new int[3][3];
Random random=new Random();
//随机生成二维数据中数据,数据范围 1~100
for (int i=0; i<arr.length; i++){
for (int j=0; j<arr.length; j++){
arr[j]=random.nextInt(100)+1;
}
}
System.out.println("---------------生成的3*3的数组-------------");
printArray(arr);
System.out.println("------------该矩阵两对角线之和为-----------");
int sum = duiJiaoXianQiuHe(arr);
System.out.println(sum);
}
//输出二维数组
public static void printArray(int[][] arr){
for (int i=0; i<arr.length; i++){
for (int j=0; j<arr.length; j++){
System.out.print(arr[j]+"\t");
if (j == arr.length-1){
System.out.println();
}
}
}
}
// 求奇数阶矩阵对角线之和
public static int duiJiaoXianQiuHe(int[][] arr){
int sum_1=0; //一条对角线的和
int sum_2=0; //另一条对角线的和
int sum=0; //两条对角线之和
for (int i=0; i<arr.length; i++){
for (int j=0; j<arr.length; j++){
if (i==j){
sum_1=sum_1+arr[j]; //第一条对角线之和
}
if((i+j)== arr.length-1){
sum_2=sum_2+arr[j]; //第二条对角线之和
}
sum=sum_1+sum_2-arr[(arr.length-1)/2][(arr.length-1)/2]; //减去两条对角线交叉的元素和
}
}
return sum;
}
}
|
|