2013-04-04 69 views
-4

所以问题是: 返回数组中的数字总和,除了忽略以6开头的数字部分并延伸到下一个7(每6个数字将是其次是至少一个7)。没有号码返回0。 如:数组中的条件数字(JAVA)

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

什么问题? – NPE 2013-04-04 10:14:23

+0

虽然条件应该为您的需求寻找!= 7。用while(nums [i]!= 7)条件更新并验证 – Dinakar 2013-04-04 10:20:13

+0

'=='表示相等,'!='表示不等于。再次阅读问题,看看你的代码,你会立即看到你的问题。 – Maroun 2013-04-04 10:20:57

回答

1

这个循环永远不会运行,因为n[i]是六:

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); 
    } 
} 
+0

Kudos! http://imgur.com/5q0LkJT – 2013-04-04 10:18:51

1

我会给你一个提示。以下是不完全正确:

while(nums[i] == 7){ 
1

尝试

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