m0_62991886 2023-04-01 10:53 采纳率: 60%
浏览 38
已结题

java如图合并二维数组

img


有9行18列二维数组,请将列(4,10)(2,12)(0,15)(6,16)(3,14)(9,13)(8,17)(1,7)(5,11)计算均值合并为9行9列的二维数组。
再将所有9行9列二维数组中(i,j)和(j,i)两个元素合并计算均值,形成三角形矩阵数组。
注意:数据类型要用float来计算。
完整测试用例:

img

  • 写回答

2条回答 默认 最新

  • 微软技术分享 全栈领域优质创作者 2023-04-01 11:03
    关注

    这个案例好实现得很,合并二维数组并计算均值的功能,如下所示;

    public class ArrayOperations {
        public static void main(String[] args) {
            // 定义原始二维数组
            float[][] array = new float[9][18];
            // 给二维数组赋值
    
            // 定义新的二维数组
            float[][] newArray = new float[9][9];
            // 遍历需要合并的列
            int[][] cols = {{4,10},{2,12},{0,15},{6,16},{3,14},{9,13},{8,17},{1,7},{5,11}};
            for (int i = 0; i < cols.length; i++) {
                // 对于每一列,计算均值并存储到新的二维数组中
                int col1 = cols[i][0];
                int col2 = cols[i][1];
                float sum = 0;
                for (int row = 0; row < array.length; row++) {
                    sum += array[row][col1] + array[row][col2];
                }
                float avg = sum / (array.length * 2);
                for (int row = 0; row < newArray.length; row++) {
                    newArray[row][i] = avg;
                }
            }
    
            // 定义三角形矩阵数组
            float[][] triangleArray = new float[9][9];
            // 遍历每一行和每一列
            for (int i = 0; i < newArray.length; i++) {
                for (int j = 0; j < newArray.length; j++) {
                    if (i == j) {
                        // 对角线上的元素,直接复制
                        triangleArray[i][j] = newArray[i][j];
                    } else if (i < j) {
                        // 上三角矩阵的元素,计算均值并存储
                        float sum = newArray[i][j] + newArray[j][i];
                        float avg = sum / 2;
                        triangleArray[i][j] = avg;
                        triangleArray[j][i] = avg;
                    }
                }
            }
    
            // 输出结果
            for (int i = 0; i < triangleArray.length; i++) {
                for (int j = 0; j < triangleArray[i].length; j++) {
                    System.out.print(triangleArray[i][j] + "\t");
                }
                System.out.println();
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 修改了问题 4月1日
  • 创建了问题 4月1日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上