求一个3*3矩阵对角线元素之和
思路分析:利用双重for循环控制输入二维数组,再将a[i][j]累加后输出。i和j符合对角线元素的情况有,i=j或者i+j=a.length-1;
代码展示:
- public static void main(String[] args) {
-
- //定义一个Scanner类
- Scanner sc=new Scanner(System.in);
- //定义一个二维数组,并从键盘获取数值
- int a[][]=new int[3][3];
- for (int i = 0; i < a.length; i++) {
- System.out.println("请输入a["+i+"]一维数组内的三个整数:");
- for (int j = 0; j < a[i].length; j++) {
- a[i][j]=sc.nextInt();
- }
- }
- //打印输出这个3*3矩阵的二维数组
- int sum=0;
- System.out.println("这个3*3矩阵的二维数组为:");
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
- System.out.print(a[i][j]+"\t");
- if (i==j&&i+j!=a.length-1||i+j==a.length-1) {
- sum+=a[i][j];
- }
- }
- System.out.println();
- }
- System.out.println("对角线元素之和:"+sum);
- }
定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换
思路分析:利用Arrays.copyOf方法复制
代码展示:
- public static void main(String[] args) {
-
- // 定义一个Scanner类
- Scanner sc = new Scanner(System.in);
-
- // 定义一个二维数组,并从键盘获取数值
- int[][] a = new int[4][4];
- for (int i = 0; i < a.length; i++) {
- System.out.println("请输入a[" + i + "]一维数组内的" + a.length + "个整数:");
- for (int j = 0; j < a[i].length; j++) {
- a[i][j] = sc.nextInt();
- }
- }
-
- // 打印输出这个4行4列二维数组
- System.out.println("这个4行4例的二维数组为:");
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
- System.out.print(a[i][j] + "\t");
- }
- System.out.println();
- }
-
- // 定义一个中间的一维数组b,作为第1行和第4行交换的中间临时存储数组
- int[] b = new int[4];
- b = Arrays.copyOf(a[0], 4);
- a[0] = Arrays.copyOf(a[3], 4);
- a[3] = b;
-
- // 定义一个中间的一维数组c,作为第2行和第3行交换的中间临时存储数组
- int[] c = new int[4];
- c = Arrays.copyOf(a[1], 4);
- a[1] = Arrays.copyOf(a[2], 4);
- a[2] = c;
-
- //打印输出交换后的4行4列二维数组
- System.out.println("交换后的4行4例二维数组为:");
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
- System.out.print(a[i][j] + "\t");
- }
- System.out.println();
- }
- }
定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0
思路分析:当a[i][j]数组的下标满足:i==0 || i==a.length-1 || j==0 || j==a[i].length-1,清理即可
代码展示:
- public static void main(String[] args) {
-
- //定义一个Scanner类
- Scanner sc=new Scanner(System.in);
-
- //定义一个二维数组,并从键盘获取数值
- int a[][]=new int[3][4];
- for (int i = 0; i < a.length; i++) {
- System.out.println("请输入a["+i+"]一维数组内的三个整数:");
- for (int j = 0; j < a[i].length; j++) {
- a[i][j]=sc.nextInt();
- }
- }
-
- //打印输出这个3*4矩阵的二维数组
- System.out.println("这个3行4列的二维数组为:");
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
-
- //根据分析可知,要想四周为0,则当i=0或者i=2或者j=0或者j=3时,数值为0;
- if(i==0||i==a.length-1||j==0||j==a[i].length-1){
- a[i][j]=0;
- }
-
- System.out.print(a[i][j]+"\t");
-
- }
- System.out.println();
- }
- }
定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0
思路分析:a[i][j]数组,当i>=j的时候,为左下角三角形的数值(包含对角线);如果不需要包含对角线数值,则只需要i>j即可额。
代码展示:
- public static void main(String[] args) {
-
- //定义一个Scanner类
- Scanner sc=new Scanner(System.in);
-
- //定义一个二维数组,并从键盘获取数值
- int a[][]=new int[3][4];
- for (int i = 0; i < a.length; i++) {
- System.out.println("请输入a["+i+"]一维数组内的三个整数:");
- for (int j = 0; j < a[i].length; j++) {
- a[i][j]=sc.nextInt();
- }
- }
-
- //打印输出这个3*4矩阵的二维数组
- System.out.println("这个3行4列的二维数组为:");
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a[i].length; j++) {
-
- //根据分析可知,要想左下三角的值为零,则i值不大于j值即可实现
- if(i>=j){
- a[i][j]=0;
- }
-
- System.out.print(a[i][j]+"\t");
-
- }
- System.out.println();
- }
- }