0

コード:

    Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
    while(termIncomeKeys.hasNext()){
        String month = termIncomeKeys.next();
        System.out.println(month);
    }

月は次のように印刷されます

1月(2012) - 1月(2012)

2月(2012) - 3月(2012)

4月(2012) - 5月(2012)

6月(2012) - 6月(2012)

7月(2012) - 10月(2012)

私が達成したいのは、各エントリ間の期間を月単位で出力したいということです。つまり、最初のエントリ間の期間は 1 か月、2 番目のエントリ間の期間は 2 などです。

4

2 に答える 2

2

これらの文字列を解析できる既製のクラスがあるかどうかはわかりませんが、ロジックは単純です。

3 文字の月を数字 (例: 0-11) に変換し、年も数字に変換します。違いは<year-diff>*12 + <month-diff><month-diff>負の可能性がある場所です。

于 2012-05-10T14:05:28.947 に答える
1

同じ年を想定:

enum Month{
JAN(0),
FEB(1),
MAR(2),
APR(3),
....
DEC(11);

Month(int index){this.index = index;}
int index;

int getIndex() {return index;}
}

Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
    while(termIncomeKeys.hasNext()){
        String month = termIncomeKeys.next();
        String str[] = month.split("-");
        String m0 = str[0], m1 = str[1];
        String y0 = mo.substr(m0.indexOf('(')+1, mo.lastIndexOf(')'));
        String y1 = m1.substr(m1.indexOf('(')+1, m1.lastIndexOf(')'));
        int yr0 = Integer.parseInt(yo), yr1 = Integer.parseInt(y1);
        m0 = m0.substr(0, mo.indexOf('(')).trim().toUpperCase();
        m1 = m1.substr(0, m1.indexOf('(')).trim(),toUpperCase();
        int duration =  yr1 *Month.valueOf(m1).getIndex() - yr0 *Month.valueOf(m0).getIndex();
    }
于 2012-05-10T14:04:25.187 に答える