2015-01-31 62 views
0

我正在使用一个foreach循环,它根据列表中项目的数量重复自己。每次重复时,它都会检查两个文本框的值是否为“0”。如果它们(或其中之一)确实存在,那么我检查它正在迭代的小时的汇总值是否(或者在“结束”评论之后的部分的情况下)是否为特定值。如果不是,那么我使用OR运算符(||)对下一个执行相同的操作。但是,这不起作用。OR运算符的问题

我正在使用debug.writeline查看循环找到匹配的位置。无论出于何种原因,它总是处于0 - 即使迭代0的hour.summary的值是“Rain”,也应该使得如果不能找到匹配,而是激发其他的值。

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和“!=”?因为在我看来,只要小时。总结不是“雨”,那声明不会开火;也许“|”而不是“||”? – 2015-01-31 19:22:03

+0

Hour是包含在forecast.io PCL中的“HourDataPoint”对象。试图更换||用|它仍然输出这个,这是不是我想要的:设置开始与小雨小时0(换行) 设置结束与小雨在小时0 – Kevin 2015-01-31 19:25:50

回答

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

我一直认为OR是这样的:如果我有一个猫或一个那么狗...,但这似乎并不是它所做的。和工作。 – Kevin 2015-01-31 19:37:06

+1

你理解或正确,但你问是否有什么东西是从_或_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _不同_ ...不同_ ... 您输入的任何字符串将始终不同于“雨”或不同于“雪” – 2015-01-31 19:44:17