2012-05-10 11 views
0

コード内のコンテンツ間の数ヶ月で所要時間検索:イテレータ

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

月は

月(2012年)として印刷される - 月(2012年)

2月(2012) - 月(2012年)

4月(2012) - (2012)

6月(2012年)月 - 6月(2012年)

7月(2012年) - 10月(2012)

私は何を達成したいことは、私はエントリのそれぞれの間に数ヶ月の面で時間を印刷したいです。つまり、最初の入力の間の期間は1ヶ月、2番目の間の期間は2などです。

答えて

2

あなたのためにこれらの文字列を解析することができ、既製のクラスがある場合、私は知らないが、ロジックは単純です:

は三文字を変換します月を数字(例:0〜11)に変換し、年を数字に変換します。 差は<year-diff>*12 + <month-diff>です。<month-diff>は負の値になります。

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(); 
    } 
+0

年は同じではありません。異なる可能性があります –

+0

enumパートを完成してください。 –

+0

ありがとうございます。しかし、1月(2012)〜1月(2012)の期間として0が表示されます。 1にする必要があります。 –