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

Java中调用fillArray方法初始化3×4二维数组时出现“需要int[][]参数”错误的问题咨询

问题分析与解决方案

嘿,我一眼就揪出问题所在了——你的fillArray方法定义和调用不匹配,而且还有个隐藏的逻辑bug,咱们一步步来搞定:

1. 核心错误:方法参数不匹配

你定义的fillArray方法要求传入一个int[][]类型的参数:

public static int[][] fillArray(int[][] userInput) { ... }

但你在main方法里调用时却没传任何参数:

int[][] grid = fillArray();

这就导致编译器报错“需要int[][]类型参数”——它盼着你给方法传个数组,结果你啥都没给。而且更关键的是:这个参数完全多余!因为你在方法内部已经新建了一个3×4的数组int[][] grid = new int[3][4];,根本用不上传入的userInput。

2. 修正fillArray方法

直接把方法的参数删掉,改成无参方法就行:

public static int[][] fillArray() {
    Scanner input = new Scanner(System.in);
    int[][] grid = new int[3][4];
    System.out.println("Enter a 3x4 grid of numbers please: ");
    for (int row = 0; row < grid.length; row++) {
        for (int column = 0; column < grid[row].length; column++) {
            grid[row][column] = input.nextInt();
        }
    }
    return grid;
}

这样int[][] grid = fillArray();就能正常调用了。

3. 顺便修复sumColumn方法的逻辑bug

你的sumColumn方法逻辑完全跑偏了:每次循环列的时候都把columnIndex重置为0,最后返回的只会是最后一列的和,而且完全没用到传入的columnIndex参数。正确的逻辑应该是根据传入的列索引,遍历所有行累加该列的数值:

public static int sumColumn(int[][] m, int columnIndex) {
    int sum = 0;
    // 遍历所有行,累加对应列的数值
    for (int row = 0; row < m.length; row++) {
        sum += m[row][columnIndex];
    }
    return sum;
}

完整修正后的代码

import java.util.Scanner; // 别忘了导入Scanner类!

public class SumOfColumns { 
    public static int sumColumn(int[][] m, int columnIndex) { 
        int sum = 0;
        for (int row = 0; row < m.length; row++) { 
            sum += m[row][columnIndex]; 
        }
        return sum; 
    } 
    public static void main(String[] args) { 
        int[][] grid = fillArray();
        // 展示每一列的和
        for (int col = 0; col < grid[0].length; col++) {
            System.out.println("Sum of column " + col + " is: " + sumColumn(grid, col));
        }
    } 
    public static int[][] fillArray() { 
        Scanner input = new Scanner(System.in); 
        int[][] grid = new int[3][4]; 
        System.out.println("Enter a 3x4 grid of numbers please: "); 
        for (int row = 0; row < grid.length; row++) { 
            for (int column = 0; column < grid[row].length; column++) { 
                grid[row][column] = input.nextInt(); 
            } 
        }
        input.close(); // 记得关闭Scanner
        return grid; 
    } 
}

额外提醒:别忘了导入java.util.Scanner类,不然会报找不到Scanner的错误,我已经在代码里补上了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:22:44