2015-01-31 4 views
0

Я использую цикл foreach, который повторяется в зависимости от количества элементов в списке. Каждый раз, когда он повторяется, он проверяет, имеет ли два текстовых поля значение «0». Если они (или один из них), то я проверяю, является ли суммарное значение часа, в котором он выполняется, (или нет) в случае части после комментария «конец») определенное значение. Если это не так, я использовал оператор OR (||), чтобы сделать то же самое для следующего. Однако это не работает.Проблемы с оператором OR

Я использую debug.writeline, чтобы увидеть, где петля находит совпадение. Это по какой-то причине всегда в 0 - даже если значение hour.summary для итерации 0 - это «Дождь», что-то, что должно сделать, если не сможет найти совпадение и вместо этого зажечь другое.

foreach (var hour in result.Hourly.Hours) 
{ 
    //Start 
    if (starttemp.Text == "0") 
    { 
     if ((hour.Summary == "Rain") || (hour.Summary == "Snow") || (hour.Summary == "Drizzle") || (hour.Summary == "Light Rain") || (hour.Summary == "Light Snow") || (hour.Summary == "Heavy Rain") || (hour.Summary == "Heavy Snow")) 
     { starttemp.Text = hour.Temperature.ToString(); Debug.WriteLine("SET START WITH " + hour.Summary + " AT HOUR " + increment); } 
     else 
     { } 
    } 
    //End 
    if (endtemp.Text == "0") 
    { 
     if ((hour.Summary != "Rain") || (hour.Summary != "Snow") || (hour.Summary != "Drizzle") || (hour.Summary != "Light Rain") || (hour.Summary != "Light Snow") || (hour.Summary != "Heavy Rain") || (hour.Summary != "Heavy Snow")) 
     { endtemp.Text = hour.Temperature.ToString(); Debug.WriteLine("SET END WITH " + hour.Summary + " AT HOUR " + increment); } 
     else 
     { } 
    } 
    increment = increment + 1; 
} 
+0

Что такое объект «Час»? Вы уверены, что ваш второй IF с OR и «! =»? Потому что мне кажется, что до тех пор, пока час. Сумари не «Дождь», это заявление не собирается стрелять; возможно, «|» вместо «||»? –

+0

Час - это объект HourDataPoint, включенный в файл прогноза. PCL. Пробовал заменить || с | и он по-прежнему выводил это, что не то, что я хочу: SET START WITH Light Rain AT HOUR 0 (новая строка) SET END WITH Light Rain AT HOUR 0 – Kevin

ответ

2

Линия

if ((hour.Summary != "Rain") || (hour.Summary != "Snow") || (hour.Summary != "Drizzle") || (hour.Summary != "Light Rain") || (hour.Summary != "Light Snow") || (hour.Summary != "Heavy Rain") || (hour.Summary != "Heavy Snow")) 

всегда будет верно ...

Я не 100% уверен, что вы пытаетесь сделать, но я думаю, вы должны заменить || с & &

+0

Я всегда думал об этом: если у меня есть кошка ИЛИ собака тогда ..., но это действительно не похоже на то, что она делает. И работает. – Kevin

+1

Вы правильно понимаете ИЛИ, но вы спрашиваете, есть ли что-то _different_ из OR _different_ из b ... Любая строка, которую вы вводите, всегда будет отличаться от «Дождь» или отличается от «Снег», –

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