gpt4 book ai didi

java - 返回数组中数字的总和,对于空数组返回 0。除了数字13非常不吉利

转载 作者:行者123 更新时间:2023-11-29 04:36:32 25 4
gpt4 key购买 nike

我正在练习编码问题,我遇到了这个任务。

返回数组中数字的总和,对于空数组返回 0。除了数字 13 是非常不吉利的。所以它不算数,紧跟在 13 之后的数字也不算数

我想出了正确的解决方案,但我不确定一件事。

public int sum13(int[] nums) 
{
int sum = 0;
for(int i = 0; i < nums.length; i++)
{
if(nums[i] == 13)
i++;
else
sum += nums[i];
}
return sum;
}

在其中一个测试用例中,输出为 4,sum13([1, 2, 13, 2, 1, 13]) → 4 。

我的问题是,在我的“if”语句中我将计数器加了 1。为什么它没有将下一个元素添加到总和中?为什么它会跳过下一个元素,即使我只递增 1?

最佳答案

你的问题在这里:

if(nums[i] == 13)
i++;

增加索引没有意义;这只会让您在一次迭代中将循环计数器增加两倍!

所以,就这样吧

if(nums[i] != 13) {
sum += nums[i];
}

代替(这里没有别的;并且:最好始终使用{大括号};即使它只是一个单行!)

因为您实际上根本不需要该索引,所以您可以使用 for-each 循环样式:

for (int num : nums ) {
if (num != ...

搞乱索引的机会更少!

关于java - 返回数组中数字的总和,对于空数组返回 0。除了数字13非常不吉利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com