Java调用入参为int[]的sum13方法报参数不匹配错误如何解决
报错原因及修复方案
1. 传参报错修复
你收到的报错:
The method sum13(int[]) in the type A3 is not applicable for the arguments (int, int, int, int)
核心原因是Java不支持直接用[1,2,2,1]的格式声明数组作为方法入参,这种写法会被编译器识别为多个int类型的独立参数,和sum13要求的int[]参数类型不匹配。
正确的入参写法是显式创建int数组对象:sum13(new int[]{1, 2, 2, 1})
修改后的main方法代码:
public static void main(String[] args) { System.out.println(sum13(new int[]{1, 2, 2, 1})); System.out.println(sum13(new int[]{13, 1, 2, 13, 3, 3})); }
2. sum13方法逻辑修复
你现有sum13方法存在两处核心问题,无法实现需求:
- 判断逻辑
nums[i] ==13 || nums[i]-- == 13错误,nums[i]--会修改原数组的值,也无法实现“跳过13后紧跟的第一个数字”的逻辑 - return语句写在了for循环内部,会导致第一次循环结束就直接返回结果,无法遍历整个数组
正确的实现代码如下:
public static int sum13(int[] nums) { int sum = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] == 13) { // 遇到13时,跳过当前元素和后一个元素 i++; } else { sum += nums[i]; } } return sum; }
验证结果
- 输入
new int[]{1, 2, 2, 1},输出结果为6 - 输入
new int[]{13, 1, 2, 13, 3, 3},输出结果为5
内容的提问来源于stack exchange,提问作者Michael Debo
相关产品推荐
相关产品推荐

