如何在数组中获得准确的元素?

时间:2012-07-13 07:04:56

标签: java calendar

我有一个数组:

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;
}

3 个答案:

答案 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范围内工作):

  1. 如果您的数组真的是0, 10, 20, ..., 50,您可以这样做:

    return 10 * (no / 10);
    
  2. 如果你有更复杂的匹配,你可以像这样使用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++) {

删除它应该可以解决问题。