Java 3维数组实现:提取第三四列元素并计算对应和的正确方法
现有代码存在的核心错误
- 数组声明语法不兼容Java:Java不支持在类型声明位写维度大小(该写法为C++规则),不能声明为
int[3][2][4] arr1,需写为int[][][] arr1,数组实际维度长度由初始化内容自动推导。 - 循环逻辑存在硬伤:当前三维数组的层级为「3个长度为2的二维块 → 每个二维块包含2个长度为4的待处理一维数组」,仅靠单层循环无法触达最内层的目标一维数组;且循环变量存在笔误:定义的循环变量为
i,增量写为l++,会直接触发编译报错。 - 数组访问语法错误:Java多维数组访问需要逐层标记索引,写法为
arr1[i][j][k],不支持C++风格的逗号分隔索引写法arr1[i, 3, i]。 - 方法与API调用错误:Java无返回值方法的签名为
public static void sumElements(),无需在参数位标注void;Java标准输出类为大写开头的System,方法调用语序为System.out.println(输出内容),不能写成小写的system.println.out(...)。
正确实现代码
首先明确索引映射:需求中提到的「自然计数下的第三、四列」,对应数组0索引规则下的下标2、下标3,完全匹配你给出的预期输出。通过两层增强for循环遍历到最内层的一维目标数组,提取对应位置元素、计算和后按格式输出即可:
import java.util.Arrays; public class ArrayProcessor { public static void sumElements() { int[][][] arr1 = { {{1,2,3,0}, {1,2,0,3}}, {{1, 1, 1, 0}, {1 , 1, 0, 1}}, {{ 2,2,2,0}, {2,2,0,2}} }; // 第一层遍历所有二维块 for (int[][] twoDimensionBlock : arr1) { // 第二层遍历块内所有长度为4的目标一维数组 for (int[] targetArray : twoDimensionBlock) { // 提取自然计数第三、四列元素 int col3 = targetArray[2]; int col4 = targetArray[3]; // 计算两元素和 int sum = col3 + col4; // 格式化匹配要求的输出样式 String originalArrayStr = Arrays.toString(targetArray) .replace("[", "{") .replace("]", "}"); System.out.printf("%s ---> [%d %d] ; %d%n", originalArrayStr, col3, col4, sum); } } } public static void main(String[] args) { sumElements(); } }
运行输出结果
与你给出的预期效果完全一致:
{1, 2, 3, 0} ---> [3 0] ; 3 {1, 2, 0, 3} ---> [0 3] ; 3 {1, 1, 1, 0} ---> [1 0] ; 1 {1, 1, 0, 1} ---> [0 1] ; 1 {2, 2, 2, 0} ---> [2 0] ; 2 {2, 2, 0, 2} ---> [0 2] ; 2
内容的提问来源于stack exchange,提问作者FreddoDojo
相关产品推荐
相关产品推荐

