3

私は配列を持っています:

int num[] = {10, 20, 30, 40, 50};

Calendar から現在の分を取得し、それを上記の配列と比較して、配列内の正確な要素を取得します。

次のような私のコードは、最初の要素を取得することが多い比較後、私の望みどおりに正しくありません.plsは私を修正するのに役立ちます. ありがとう

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

3 に答える 3

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;
}
于 2012-07-13T07:10:10.087 に答える
2

ここに2つの解決策があります(両方とも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

于 2012-07-13T07:22:15.490 に答える
2

この行には余分なセミコロンがあります:

for (int i = 0; i < num.length;; i++) {

それを削除すると、問題が解決するはずです。

于 2012-07-13T07:11:46.587 に答える