测试两个整数以确定现在是白天还是晚上
Test two integers to determine if it is day or night
我正在从事一个使用国家气象局数据的项目。一个应用程序正在确定是白天还是晚上(来自数据 - 而不是来自用户的位置)
我的问题是:我无法理解为什么我写的代码总是returns是晚上!
我有房产:
BOOL isNight;
还有一些变量:
int sunriseDifference
int sunsetDifference
表示气象站的观测时间与该气象站当地日落或日出的时间差。
我的逻辑是这样的:
sunriseDifference > 0 AND sunsetDifference > 0 然后是晚上(PM 晚上)
或
sunriseDifference < 0 AND sunsetDifference < 0 然后是晚上(AM 晚上)
否则就是白天
代码如下:
if ((sunriseDifference >= 0) && (sunsetDifference >= 0)) {
self.isNight = YES;
} else if ((sunriseDifference <= 0) && (sunsetDifference <= 0)) {
self.isNight = YES;
} else self.isNight = NO;
这总是会产生
self.isNight = YES
知道我的错误在哪里吗?
编辑
为了清楚起见,sunriseDifference 和 sunsetDifference 是整数,代表自日落或日出以来的分钟数。
所以在 1500,在加利福尼亚州的一个气象站(白天),变量的值是:
sunriseDifference = 482
sunsetDifference = -118
所以,按照我的逻辑,以上两个条件都不满足,所以self.isNight应该是NO。我的代码 returns self.isNight 为 YES...
我断定我在代码中犯了错误,而不是我的逻辑。有什么想法吗?
同意暗示如果没有气象服务的语义,问题很难理解的评论。但是如果我正在设计一个天气服务,那两个参数总是会有不同的符号:
sunriseDifference > 0 && sunsetDifference < 0 means it's day
sunriseDifference < 0 && sunsetDifference > 0 means it's night
如果我对数据的含义是正确的,那么代码可以更正并简化为:
self.isNight = sunriseDifference < 0 && sunsetDifference >= 0;
我正在从事一个使用国家气象局数据的项目。一个应用程序正在确定是白天还是晚上(来自数据 - 而不是来自用户的位置)
我的问题是:我无法理解为什么我写的代码总是returns是晚上!
我有房产:
BOOL isNight;
还有一些变量:
int sunriseDifference
int sunsetDifference
表示气象站的观测时间与该气象站当地日落或日出的时间差。
我的逻辑是这样的:
sunriseDifference > 0 AND sunsetDifference > 0 然后是晚上(PM 晚上)
或
sunriseDifference < 0 AND sunsetDifference < 0 然后是晚上(AM 晚上)
否则就是白天
代码如下:
if ((sunriseDifference >= 0) && (sunsetDifference >= 0)) {
self.isNight = YES;
} else if ((sunriseDifference <= 0) && (sunsetDifference <= 0)) {
self.isNight = YES;
} else self.isNight = NO;
这总是会产生
self.isNight = YES
知道我的错误在哪里吗?
编辑
为了清楚起见,sunriseDifference 和 sunsetDifference 是整数,代表自日落或日出以来的分钟数。
所以在 1500,在加利福尼亚州的一个气象站(白天),变量的值是:
sunriseDifference = 482
sunsetDifference = -118
所以,按照我的逻辑,以上两个条件都不满足,所以self.isNight应该是NO。我的代码 returns self.isNight 为 YES...
我断定我在代码中犯了错误,而不是我的逻辑。有什么想法吗?
同意暗示如果没有气象服务的语义,问题很难理解的评论。但是如果我正在设计一个天气服务,那两个参数总是会有不同的符号:
sunriseDifference > 0 && sunsetDifference < 0 means it's day
sunriseDifference < 0 && sunsetDifference > 0 means it's night
如果我对数据的含义是正确的,那么代码可以更正并简化为:
self.isNight = sunriseDifference < 0 && sunsetDifference >= 0;