我遇到了问题,我尝试了几种方法,但我找不到解决方案。
问题(例如在Objective-C中) 我有一个从0开始的进度,每次迭代的值增加3点。即0,3,6,9,12,15等
好吧,我需要当计数器超过10时,会显示一个警告,但只有当超过10,20,30,40等时,在中间值(3,6,9等)应该不显示。
例如:
0 -> nothing
3 -> nothing
6 -> nothing
9 -> nothing
12 -> ALERT!!
15 -> nothing
18 -> nothing
21 -> ALERT!!
24 -> nothing
27 -> nothing
30 -> ALERT!!
33 -> nothing
36 -> nothing
[...]
有什么想法吗?
谢谢!
答案 0 :(得分:2)
将value
舍入为10的倍数。将value-3
舍入为10的倍数。如果舍入值不同,则显示警告。
static int roundToMultipleOf10(int n) {
return 10 * (n / 10);
}
static void showAlertIfAppropriateForValue(int value) {
if (roundToMultipleOf10(value) != roundToMultipleOf10(value - 3)) {
UIAlertView *alert = [[UIAlertView alloc] init...];
[alert show];
}
}
答案 1 :(得分:2)
您的要求意味着ALERT!!
仅出现在x0,x1或x2中,其中x是大约10位数字:
for (int i = 0; i < 1000; i += 3) {
if (i > 10 && i % 10 <= 2) {
NSLog(@"ALERT!!");
}
}
答案 2 :(得分:0)
在完成所有答案的混合后我的最终解决方案。 谢谢!
// Round function
int (^roundIntegerTo10)(int) =
^(int value) {
return value / 10 * 10;
};
// Progress evaluator
if (_currentProgress > _nextProgress && _currentProgress >= 10) {
NSLog(@"ALERT!!!");
_nextProgress = roundIntegerTo10(_currentProgress) + 10;
}