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

标签 java arrays

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

返回数组中数字的总和,对于空数组返回 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/

相关文章:

java - SelectedRow改变,当按下向上或向下时,JTable

java - 使用 JFileChooser 读取文件名

使用 eclipse 进行 Java Web 服务客户端身份验证

javascript - 使用 React 获取数组中的下一个项目

java - Java 数组参数声明语法 "..."是如何工作的?

php - 如何将表单输入数组转换为 PHP 数组

java - 在 Parse android API 上调用 findInBackground() 时,我们会在哪个线程上得到回调

Java 闪烁光标 Ubuntu 终端

Java 按字母顺序对 ArrayList 内的 ArrayList 进行排序

ios - 根据条件将数组合并到字典中?