2013-04-24 5 views
0

У меня есть массив, называемый e, этот массив содержит объекты, но не для каждого индекса. Поэтому я использую for-loop для поиска первого индекса в массиве, который содержит объект. Я делаю это, ища значения, которые не равны нулю. Если я нахожу его, я сохраняю индекс в переменной, называемой индексом, и выхожу из цикла. Если индекс, который не имеет нулевых значений, был найден, я хочу вернуться из метода. Еще, я хочу продолжить и использовать индекс переменной, содержащий индекс массива.Найти индекс в массиве, который не имеет нулевого значения

int index; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

// if index did not get any value inside the for-loop, return 

// And here I use the index that was found using the for-loop 

Как я могу проверить, получил ли переменный индекс новый индекс из цикла for?

Спасибо!

+0

Добавить логическую переменную и установить это до истины, прежде чем вы сломаетесь. – nhahtdh

ответ

1

Добавьте булевский флаг, инициализируйте его до значения false перед циклом и установите только значение true в блоке if с инструкцией break. После цикла проверьте значение флага.

7

Это одна из причин всегда инициализировать переменные. При инициализации, вы можете сделать что-то со значением (и избежать ненужных логических флагов)

int index = -1; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

if (index == -1) return; 
+0

Это более сжатая версия, если решение Ivaylow, и не требует дополнительного флага bool. - Значение отрицательного индекса указывает, что значение не найдено. – RainbowFish

+0

Я не выбрал этот вариант, как если бы у вас было несколько таких циклов в строке, вы не будете иметь эффекта, что значение индекса не будет изменено. Однако я согласен с тем, что если у вас есть один цикл, это должно сделать. –

+0

@IvayloStrandjev Ваше решение, безусловно, не так, но я думаю, что это чище в этом конкретном сценарии. Очевидно, это зависит от вашей конкретной ситуации. – durron597

0

по умолчанию индекс -1, а затем проверить, если его> -1

int index = -1; 

for (int i = 0; i < e.length; i++) { 
    if (e[i] != null) { 
     index = i; 
     break; 
    } 
} 

if (index >= 0) { 


} 
Смежные вопросы