You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中仅初始化数组部分元素:跳过首尾元素时出错求助

问题分析与修正

兄弟,我瞅了下你的代码,问题主要出在判断是否要跳过元素的逻辑上,咱们一步步捋清楚:

核心错误点

  • 你刚创建的二维数组arr,所有元素默认都是0,这时候用arr[i][j] == arr[0][0]来判断是不是第一个元素完全没用——因为所有元素都是0,等于把所有元素都跳过了,根本没法正常赋值。
  • 判断是否是首/尾元素,得基于索引值来判断,而不是元素当前的值(毕竟这时候还没给元素赋值呢)。

两种需求的修正代码

需求1:跳过整个数组的第一个元素(arr[0][0])和最后一个元素(arr[m-1][n-1])

public static void main(String args[]) throws Exception { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Input Rows: "); 
    int m = sc.nextInt(); 
    System.out.println("Input Columns: "); 
    int n = sc.nextInt(); 
    System.out.println("Enter values: "); 
    int[][] arr = new int[m][n]; 
    for (int i = 0; i < m; i++) { 
        for (int j = 0; j < n; j++) {
            // 跳过数组第一个和最后一个元素
            if ((i == 0 && j == 0) || (i == m-1 && j == n-1)) {
                continue; // 跳过,不赋值
            }
            arr[i][j] = sc.nextInt();
        }
    }
}

需求2:跳过每行的第一个和最后一个元素

如果你的意图是每行都跳过首列和末列的元素,代码可以改成这样:

public static void main(String args[]) throws Exception { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Input Rows: "); 
    int m = sc.nextInt(); 
    System.out.println("Input Columns: "); 
    int n = sc.nextInt(); 
    System.out.println("Enter values: "); 
    int[][] arr = new int[m][n]; 
    for (int i = 0; i < m; i++) { 
        for (int j = 0; j < n; j++) {
            // 跳过当前行的第一个和最后一个元素
            if (j == 0 || j == n-1) {
                continue; // 跳过,不赋值
            }
            arr[i][j] = sc.nextInt();
        }
    }
}

额外提醒

如果跳过的元素需要保留默认值0,用continue就可以;如果需要给这些跳过的元素赋其他值,直接在if块里赋值就行,不用continue。

内容的提问来源于stack exchange,提问作者Dinesh Solanki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:43:11