题目:遍历二维数组int a[][] ={{ 23, 65, 43, 68 }, { 45, 99, 86, 80 }, { 76, 81, 34, 45 }, { 88, 64, 48, 25 }};后,再通过循环计算该二维数组的两条对角线之和。
二维数组如下
思路:通过控制二维数组的行列下标来进行对元素的控制,
遍历数组的每一个元素直接写双重for循环就可以了:
遍历左对角线思路:因为左对角线默认对应的二维数组下标是【0】【0】 到【1】【1】依次类推,所以写一个for循环来进行遍历就好了。 num是用来计算左对角和的
遍历右对角线和思路:观察题目二维数组的下标位置,可得规律 右对角线下标规律 【0】【3】到【1】【2】......,所以写一个for循环从行长度开始自减,到=0结束,a++是行初始值,i则是列初始值 。num是在左对角和的基础上加右对角和。
源代码如下:
package xaingmu;
public class as {
public static void main(String[] args) {
//2、遍历二维数组int a[][] ={{ 23, 65, 43, 68 }, { 45, 99, 86, 80 },
// { 76, 81, 34, 45 }, { 88, 64, 48, 25 }};后,再通过循环计算该二维数组的两条对角线之和。
// TODO Auto-generated method stub
// TODO Auto-generated method stub
//char arr[][]=new char[4][];
//arr[0]=new char[]{'23','65','43','68'};
int a=0; //右对角线列初始值
int num=0; //对角和
int arr[][] ={{ 23, 65, 43, 68 },
{ 45, 99, 86, 80 },
{ 76, 81, 34, 45 },
{ 88, 64, 48, 25 }};
for(int i=0;i<arr.length;i++) { //遍历列
for(int c=0;c<arr[0].length;c++) { //遍历行
System.out.print(arr[i][c]); //打印二维数组
if(c==arr.length-1) { //等于0时换行
System.out.println();
}
else { //否则添四个空格 /t是制表符
System.out.print("\t");
}
}
}
for(int i=0;i<arr.length;i++) { //输出0-3(行列)
//for(int a=0;a<arr.length;a++) {}
//System.out.println(arr[i][i]); //输出左对角
num=num+arr[i][i]; //左对角和
}
System.out.println("-----------------------");
System.out.println("左对角线和="+num); //左对角和
System.out.println("-----------------------");
for(int i=arr.length-1;i>=0;i--) { //输出3-0 i作为列
//System.out.println(i);
//System.out.println(a);
//for(int a=0;a<arr.length;a++) {}
//System.out.println(arr[a][i]); //输出右对角
num=num+arr[a][i]; //在左对角和的基础上加上右对角
a++; //行加一
//System.out.println(num);
}
System.out.println("对角线和="+num); //输出对角线和
}
}
运行结果如下:
本人java刚学到二维数组,代码写的不好,大佬勿喷。有更好的思路的也可以在下方留言,我们一起讨论,一起学习。
阿~苏:生命不息,学习不止