2012-05-10 42 views
0

代碼:找到持續在內容之間幾個月的Iterator

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

月份打印爲

月(2012年) - 揚(2012)

二月(2012年) - 三月(2012)

四月(2012) - 五月(2012年)

君(2012) - 君(2012)

Jul(2012) - Oct(2012)

我想實現的是我想打印每個條目之間月份的持續時間。也就是說,第一次錄入的持續時間爲1個月,第二次錄入的持續時間爲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

你可以請完成枚舉部分? –

+0

謝謝。但是它會在Jan(2012) - Jan(2012)之間打印0。它應該是1. –

相關問題