定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。

本文介绍如何在Java中定义一个16x16的整型二维数组,并填充元素,接着计算并打印所有行和列的元素累加和。提供了代码实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@二维数组的打印

#定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。

二、代码实现

代码如下(示例):

package com.lagu.homwork2;

import com.lagou.task10.StaticOuter;

import java.util.Random;
import java.util.Scanner;//借用扫描器

/**
 * 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值,分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
 * 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印(对角线上的元素)。
 */
public class PrintArrayArrayTest {
    public static void main(String[] args) {
        //1. 先定义一个扫描器
        Scanner sc = new Scanner(System.in);

        //2.定义一个int型的二维数组
        System.out.print("请输入数组的行数:");
        int row = sc.nextInt();
        System.out.print("请输入数组的列数:");
        int column = sc.nextInt();
        int[][] arr = new int[row][column];

        //2.2 根据需求判断选择那是输入方式
        while(true){
            System.out.println("请选择“手动输入”还是“自动生成”一个整型二维数组: ");
            String str = sc.next();
            if ("手动输入".equals(str)) {
                //2.3输入二维数组的值
                for (int i = 0; i < arr.length; i++) {
                    System.out.println("请输入第" + (i + 1) + "行的" + arr[i].length + "个元素");
                    for (int j = 0; j < arr[i].length; j++) {
                        arr[i][j] = sc.nextInt();  //读取arr[i][j]的值
                    }
                }
                break;  //退出循环
            } else if ("自动生成".equals(str)) {
                //2.4电脑随机产生二维数组
                Random ra = new Random();
                for(int i = 0; i < arr.length; i++){
                    for(int j = 0 ; j < arr[i].length; j++){
                        arr[i][j]= ra.nextInt(10); //a[i][j] 取 0 ~ 9之间的随机值
                    }
                }
                break;
            } else {
                System.out.println("输入有误!"); //输入判断,有误继续循环提示输入
            }
        }
        //3 打印输入的二维数组
        System.out.println("初始数组为:");
        for(int i = 0; i < arr.length; i++){
            for(int j = 0 ; j < arr[i].length; j++){
                System.out.print(arr[i][j]+ "  "); //打印a[i][j]
            }
            System.out.println("");//换行
        }

        System.out.println("------------------------------------------------");
        //3.实现所有行的相加并打印
        System.out.println("行相加:");
        //3.1 定义一个int型的一维数组[16]来存放个行之和
        int[] sum1 = new int[row];
        //3.2 打印每行元素相加
        for(int i = 0; i < arr.length; i++){
            System.out.print("第" + (i+1) + "行之和:");
            for(int j = 0 ; j < arr[i].length; j++){
                if(j< arr[i].length - 1) {
                    System.out.print(arr[i][j] + " + ");
                }else{
                    System.out.print(arr[i][j]);
                }
                sum1[i] += arr[i][j];
            }
            System.out.println(" = " + sum1[i]);
        }

        System.out.println("------------------------------------------------");
        //4.实现所有列的相加并打印
        //4.1 将数组arr[i][j] 转换换成数组arr1[j][i]
        int[][] arr1 = new int[column][row]; //新定义一个数组是为了代码的可扩展性  比如:3行4列也可以实现所有列中所有元素的累加和并打印
        //4.2 定义一个int型的一维数组[16]来存放每个"列"(行)之和
        int[] sum2 = new int[column];
        System.out.println("列相加:");
        for(int i = 0; i < arr1.length; i++){
            System.out.print("第" + (i+1) + "行之和:");
            for(int j = 0 ; j < arr1[i].length; j++){
                arr1[i][j] = arr[j][i];  //将每列的值赋值给每行
                if(j< arr1[i].length - 1) {
                    System.out.print(arr1[i][j] + " + ");
                }else{
                    System.out.print(arr1[i][j]);
                }
                sum2[i] += arr1[i][j];
            }
            System.out.println(" = " + sum2[i]);
       }

        System.out.println("------------------------------------------------");
        //5. 实现左上角到右下角对角线上的元素累加并打印
        System.out.println("打印左上角到右下角对角线上的元素:");
        int sum3 = 0; //定义sum3来记录打印左上角到右下角对角线上的元素之和
        for(int i = 0; i < arr.length; i++){
            for(int j = 0 ; j < arr[i].length; j++){
                if(i == j){
                    sum3 += arr[i][j];
                    System.out.print(arr[i][j]);  //如果是对角线上的元素则显示
                }else {
                    System.out.print("  "); //如果不是对角线上的元素则打印空格
                }
            }
            System.out.println(""); //换行
        }
        System.out.println("左上角到右下角对角线上的元素之和 = " + sum3);

        System.out.println("------------------------------------------------");
        //5. 实现右上角到左下角对角线上的元素累加并打印
        System.out.println("右上角到左下角对角线上的元素: ");
        int sum4 = 0; //定义sum4来记录打印右上角到左下角对角线上的元素之和
        for(int i = 0; i < arr.length; i++){
            for(int j = 0 ; j < arr[i].length; j++){
                if(arr.length == (i + j)){      //右上角到左下角对角线上的元素特征是arr.length == (i + j)
                    sum4 += arr[i][j];
                    System.out.print(arr[i][j]);//如果是则打印出来
                }else {
                    System.out.print("  ");//否则打印空格
                }
            }
            System.out.println(""); //换行
        }
        System.out.println("右上角到左下角对角线上的元素之和 = " + sum4);
    }
}

2.代码实现

代码如下(示例):

请输入数组的行数:7
请输入数组的列数:8
请选择“手动输入”还是“自动生成”一个整型二维数组: 
自动生成
初始数组为:
8  1  2  2  0  6  6  3  
5  9  6  4  8  0  0  4  
3  8  5  9  4  0  5  5  
7  4  2  8  8  9  1  7  
3  9  6  3  3  5  8  4  
8  5  9  9  0  9  3  7  
3  1  0  6  5  7  3  0  
------------------------------------------------
行相加:
第1行之和:8 + 1 + 2 + 2 + 0 + 6 + 6 + 3 = 282行之和:5 + 9 + 6 + 4 + 8 + 0 + 0 + 4 = 363行之和:3 + 8 + 5 + 9 + 4 + 0 + 5 + 5 = 394行之和:7 + 4 + 2 + 8 + 8 + 9 + 1 + 7 = 465行之和:3 + 9 + 6 + 3 + 3 + 5 + 8 + 4 = 416行之和:8 + 5 + 9 + 9 + 0 + 9 + 3 + 7 = 507行之和:3 + 1 + 0 + 6 + 5 + 7 + 3 + 0 = 25
------------------------------------------------
列相加:
第1行之和:8 + 5 + 3 + 7 + 3 + 8 + 3 = 372行之和:1 + 9 + 8 + 4 + 9 + 5 + 1 = 373行之和:2 + 6 + 5 + 2 + 6 + 9 + 0 = 304行之和:2 + 4 + 9 + 8 + 3 + 9 + 6 = 415行之和:0 + 8 + 4 + 8 + 3 + 0 + 5 = 286行之和:6 + 0 + 0 + 9 + 5 + 9 + 7 = 367行之和:6 + 0 + 5 + 1 + 8 + 3 + 3 = 268行之和:3 + 4 + 5 + 7 + 4 + 7 + 0 = 30
------------------------------------------------
打印左上角到右下角对角线上的元素:
8              
  9            
    5          
      8        
        3      
          9    
            3  
左上角到右下角对角线上的元素之和 = 45
------------------------------------------------
右上角到左下角对角线上的元素: 
              3
            0  
          0    
        8      
      3        
    9          
  1            
右上角到左下角对角线上的元素之和 = 24

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dlz0836

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值