Java数组逻辑

时间:2015-04-07 14:49:29

标签: java arrays

我的计划需要:

  • 返回数组中数字的总和,但忽略部分 数字从6开始并延伸到下一个7(每6个会 接下来是至少一个7)

  • 无数字返回0

示例:

sum67({1, 2, 2}) → 5
sum67({1, 2, 2, 6, 99, 99, 7}) → 5
sum67({1, 1, 6, 7, 2}) → 4

我尝试了这个但是它不适用于接下来的6和7

public int sum67(int[] nums) {
    int sixIndex=0;
    int sevenIndex=0;
    int sum = 0, flag=0;

    if(nums.length !=0) {
        for(int a=0; a<nums.length; a++) {
            if(nums[a] == 6 ) {
                flag = 1;
                break;
            }
        }

        if(flag == 1) {
            for(int i =0; i < nums.length; i++) {
                if(nums[i] == 6) sixIndex= i;
                if(nums[i] == 7) sevenIndex = i;
            }

            for(int j = 0; j<nums.length; j++) {
                if(j == sixIndex) break;
                sum+=nums[j];
            }

            for(int k = sevenIndex+1; k<nums.length; k++) {
                if(k == sevenIndex) break;
                sum+=nums[k];
            }

        }

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

   return sum;
}

2 个答案:

答案 0 :(得分:2)

这段代码应该可以解决问题。变量c跟踪我们是否在6-7块之间。

class Potato
{
    int sum67(int arr[])
    {
        boolean c = false;
        int sum = 0;
        for (int x : arr)
        {
            if (x == 6)// stop adding
                c = true;
            else if (x == 7 && c)// start adding, but only when stopped
                c = false;
            else if (!c)// add only if not stopped
                sum += x;
        }
        return sum;
    }
}

postscriptum :当您开始编码时,即使是最简单的事情也可能成为障碍。好,伙计们。

答案 1 :(得分:0)

而不是jk循环,您只能使用一个循环

 for(int j = 0; j<nums.length; j++){
        if(!((j>=sixIndex) && (j<=sevenIndex))) 
        sum +=nums[j];
  }