加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 查找数组中的数字总和 – 不包括数字13和它后面的数字

发布时间:2020-12-14 23:57:40 所属栏目:Java 来源:网络整理
导读:我想用 Java编写一个程序,给定一个数组,找到数组中所有数字的总和 – 有一个例外!由于数字13非常不吉利,我建议我们将完全排除数字13,以及直接在13之后的数字(如果存在的话)从总和中排除. 该程序,我将称之为sum13,应该从以下输入产生以下结果(这些只是几个例
我想用 Java编写一个程序,给定一个数组,找到数组中所有数字的总和 – 有一个例外!由于数字13非常不吉利,我建议我们将完全排除数字13,以及直接在13之后的数字(如果存在的话)从总和中排除.

该程序,我将称之为sum13,应该从以下输入产生以下结果(这些只是几个例子):

sum13([1,2,1])= 6这个是正常的;没有13在这里.

sum13([5,13,??2])= 5 13和13之后的数字被排除在外.

sum13([13,13])= 0数组只包含13个,因此它们都不包括在内.

sum13([1,1,13])= 4一个稍长的预期输出示例.

这是我为sum13提出的代码:

public int sum13(int[] nums) {
  int sum = 0;
  for (int i = 0; i < nums.length; i++) {
    // we start by adding all the non-13s to the sum
    if (nums[i] != 13) sum += nums[i];
  }
  // now we go back and remove all the non-13s directly after a 13
  for (int j = 0; j < nums.length; j++) {
    // the outermost loop checks if the numbers are a 13
    if (nums[j] == 13 && j < nums.length - 1) {
      for (int k = j + 1; k < nums.length; k++) {
        // this loop checks that the number after the 13 is not a 13
        if (nums[k] != 13) {
          sum -= nums[k];
          break;
        }

      }
    }
  }
  return sum;
}

上面的程序有效,虽然看起来确实很混乱!

有没有更好的方法来编写这样一个不包含多个循环和嵌套ifs的程序?

解决方法

好吧,你用i作为迭代器.当当前的数字是13时,只需要我.这样,你不仅不会在总和上加13,而且你也跳过下一个值.
public int sum13(int[] nums) {
  int sum = 0;
  for (int i = 0; i < nums.length; i++) {
    // we start by adding all the non-13s to the sum
    if (nums[i] != 13){
     sum += nums[i];
    }
    else {
     i++;
    }
  }
 return sum;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读