我正在编写一个代码,将数组中的数字相加并求和。但是,如果数字为13,则跳过该数字及其后的数字。我拿不到我的护照 main()
方法将参数输入到我为执行此任务而创建的方法中。
我目前使用的语法是:
public static int sum13(int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] ==13 || nums[i]-- == 13) {
continue;
} else {
sum += nums[i];
}
return sum;
}
}
public static void main(String[] args) {
System.out.println(sum13([1, 2, 2, 1]));
System.out.println(sum13([13, 1, 2, 13, 3, 3]));
}
}
上 System.out.println
行,我收到了错误信息,
The method sum13(int[]) in the type A3 is not applicable for the arguments (int, int, int, int)
有人知道如何解决这个错误吗?
4条答案
按热度按时间whlutmcx1#
选项:
1-创建一个数组,因为该方法需要一个数组
2-使用
varargs
参数(可变arity参数)如:致电:
在本例中,java将创建数组并将其作为
int[] nums
.这个
...
可以与任何类型一起使用,但必须是方法声明中指定的最后一个参数。编译器将生成该方法,就像传递了一个数组一样——因此它在方法内部用作指定类型的数组;当调用该方法时,将创建数组本身。或者,可以指定一个数组而不是值。尽管不是(直接)问题,但请注意
nums[i]-- == 13
没有做可能是有意的事。后缀减量表达式X--
哪里X
是一个变量(或表示变量的表达式),将递减该变量并在递减之前返回其值。所以nums[i]--
将返回的值nums[i]
并递减索引中存储的值i
. 可能是有意的nums[i-1] == 13
,但当i == 0
(除非未评估)。unguejic2#
您可以使用一个简单的
if
-else
如果数字为13,则跳过该数字及其旁边的数字:这里,如果数字是13,你只需要增加
i
如果当前迭代中的数字是13,它将不会添加到sum
因为sum
在else
此外,它不会将数字添加到它旁边,因为您会增加i
按1,循环结束时i
再次递增,这意味着i
将有效地递增两次,如果当前数字为13,则跳过13旁边的数字。此外,我还使用了其他答案中提到的可变长度参数,允许您将任意数量的参数传递给
sum13
因此你这样称呼它:pexxcrt23#
这个问题的结构很好!这个问题的原因是
main
方法不适用于sum13
方法。关于数组的理解有点错误。正确的解决办法是u91tlkcl4#
代码中的一些错误是-
for循环中的return语句。
错误地声明数组并将其传递给sum13方法。
nums[i]-- == 13
不是查找第i-1个元素的正确方法,在查找i-1元素时,请检查它是否低于零,否则您将面临arrayindexoutofbounds异常。