我有一个数组:
int num[] = {10, 20, 30, 40, 50};
我从Calendar获取当前分钟并将其与上面的数组进行比较,以获得数组中的确切元素。
我的代码如下,经过比较后经常会得到第一个元素,这不符合我的意愿,请帮助纠正我。感谢
public static int getMinute(int no) {
int num[] = {10, 20, 30, 40, 50};
for (int i = 0; i < num.length;; i++) {
if (no >= num[i]) {
no = num[i];
break;
}
}
return no;
}
答案 0 :(得分:3)
您必须更改阵列的顺序才能使用此方法。尝试
public static int getMinute(int no) {
int num[] = {50, 40, 30, 20, 10, 0};
for (int i = 0; i < num.length; i++) {
if (no >= num[i]) {
no = num[i];
break;
}
}
return no;
}
答案 1 :(得分:3)
以下是两个解决方案(均在0..59
范围内工作):
如果您的数组真的是0, 10, 20, ..., 50
,您可以这样做:
return 10 * (no / 10);
如果你有更复杂的匹配,你可以像这样使用TreeSet
:
TreeSet<Integer> c = new TreeSet<Integer>(Arrays.asList(0, 4, 23, 12, 41));
System.out.println(c.lower(5)); // return 4
System.out.println(c.lower(54)); // return 41
System.out.println(c.lower(32)); // return 23
请注意,您需要包含下限以使其生效,否则TreeSet.lower
可能会返回null
。
答案 2 :(得分:2)
这一行中有一个多余的分号:
for (int i = 0; i < num.length;; i++) {
删除它应该可以解决问题。