2013-04-04 4 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

+0

В то время как условие необходимо искать! = 7 для вашего требования. Обновить в то время как условие с while (nums [i]! = 7) и проверить – Dinakar

+0

'==' означает равный, '! =' Означает не равный. Еще раз прочитайте вопрос, посмотрите на свой код, и вы сразу увидите свою проблему. – Maroun

ответ

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 –

1

Я дам вам подсказку. Ниже не совсем верно:

while(nums[i] == 7){ 
Смежные вопросы