二维数组案例

案例一


        求一个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();}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部