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 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数