数组中的整数之和

时间:2013-04-03 13:08:15

标签: java arrays

所以,基本上,问题要求我找到数组中数字的总和。除了数字' 13'是非常不走运的,所以它不算数' 13'以及' 13'之后的数字。

这就是我所做的:

public int sum13(int[] nums) {
  int d = 0;
  int sum = 0;

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

即使我通过了大部分测试,我仍然无法理解如何从总和中排除13旁边的数字。

例如,sum13({1,2,2,1,13})→6 PASSES! sum13({13,1,13})→0通过! 但是,sum13({13,1,2,13,2,1,13})→3返回0,因为它在13的第一个实例停止。

9 个答案:

答案 0 :(得分:6)

为什么使用两个循环?如果数字为13,则不要将其添加到总和中,或者将下一个数字添加到总和中,如下所示:

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

答案 1 :(得分:4)

根据您的问题,如果数字是13&amp;它的直接继承者。所以当你发现13再次增加循环计数器时:

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

如果数组中有一个元素,这自然会跳过13的下一个元素。

答案 2 :(得分:2)

如何直接在第一个for循环中求和?更短,更容易,更快捷的方式:)

public int sum13(int[] nums) {
  int sum = 0;

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

答案 3 :(得分:1)

你听说continue做了什么吗?

if(nums[i] == 13){
     d = i;
     continue;
}

答案 4 :(得分:0)

public int sum13(int[] nums) {
      boolean skip = false;
      int sum = 0;

      for (int i=0;i<nums.length;i++){
        if(nums[i] == 13){
            skip=true;
            continue;
        }
        else{
        if(skip) {
            skip=false;
            continue;
        }
        sum+=nums[i];
        }
      }

      return sum;
    }

答案 5 :(得分:0)

你实际做的是在第一次出现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;
}

我没有测试它,但它应该工作......

干杯!

答案 6 :(得分:0)

试试这个

   public int mySum(int[] nums, int except) {
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
             sum += (nums[i] == except) ? 0: nums[i];
        }
        return sum;
    }

然后

mySum(nums, 13)

答案 7 :(得分:0)

使用继续;当值等于13时的语句。

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

答案 8 :(得分:0)

试试这个。

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