Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组中整数的和_Java_Arrays - Fatal编程技术网

Java 数组中整数的和

Java 数组中整数的和,java,arrays,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;

基本上,这些问题要求我找出数组中的数字之和。除了数字“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次传球! sum13{13,1,13}→ 0次传球! 但是,sum13{13,1,2,13,2,1,13}→ 3返回0,因为它在13的第一个实例处停止。

您听到continue的作用了吗


为什么要使用两个循环?如果数字是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;
}

在第一个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;
}

根据你的问题,如果数字是13,你就排除在外&它的直接继承者。因此,当您找到13时,再次增加循环计数器:

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

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

实际操作是在13第一次出现时停止

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;
    }
试试这个:

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;
}
我没有测试它,但它应该工作

干杯

试试这个

   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;
    }

使用“继续”按钮;值等于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;
}
试试这个

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;
}

这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦有足够的评论,您就可以发表评论了。@guerda感谢您的建议。我已经添加了必要的代码块。啊…所以如果我想排除13旁边的数字,我只需要将i增加2?i=+2i已经在每次迭代中递增,当遇到13时,不会进行加法。因此,通过编写i++,我们也跳过了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;
}
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;
}