数组中的条件数字和(JAVA)

时间:2013-04-04 10:13:26

标签: 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

我的尝试:

public int sum67(int[] nums) {
  int sum = 0;
  for(int i=0;i<nums.length;i++){
    if(nums[i] == 6){
      while(nums[i] == 7){
        i++;
      }
    }
    else{
      sum = sum + nums[i];
    }
  }
  return sum;
}

3 个答案:

答案 0 :(得分:1)

我会给你一个提示。以下是不对的:

  while(nums[i] == 7){

答案 1 :(得分:1)

此循环永远不会运行,因为n[i]为6:

while(nums[i] == 7){
    i++;
}

应该是

while(nums[i] != 7){
    i++;
}

有一种方法可以避免内部循环,并用单个循环解决问题,如下所示:

boolean seenSix = false;
for(int i=0;i<nums.length;i++){
    if (!seenSix) {
        if(nums[i] != 6) {
            sum[i] += n[i];
        } else {
            seenSix = true;
        }
    } else {
        seenSix = (n[i] != 7);
    }
}

答案 2 :(得分:1)

while(nums[i] != 7){
    i++;
}