Java 在迭代器中查找内容之间的持续时间(以月为单位)
代码:Java 在迭代器中查找内容之间的持续时间(以月为单位),java,Java,代码: Iterator termIncomeKeys=termIncome.keySet().Iterator(); while(termIncomeKeys.hasNext()){ 字符串month=termIncomeKeys.next(); 系统输出打印项次(月); } 月份打印为 2012年1月-2012年1月 2012年2月-2012年3月 2012年4月-2012年5月 2012年6月-2012年6月 2012年7月-2012年10月 我想实现的是,我想以每个条目之间的月为单位打
Iterator termIncomeKeys=termIncome.keySet().Iterator();
while(termIncomeKeys.hasNext()){
字符串month=termIncomeKeys.next();
系统输出打印项次(月);
}
月份打印为
2012年1月-2012年1月
2012年2月-2012年3月
2012年4月-2012年5月
2012年6月-2012年6月
2012年7月-2012年10月
我想实现的是,我想以每个条目之间的月为单位打印持续时间。也就是说,第一次输入之间的持续时间为1个月,第二次输入之间的持续时间为2个月,依此类推。假设同一年:
Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
while(termIncomeKeys.hasNext()){
String month = termIncomeKeys.next();
System.out.println(month);
}
enum月{
一月(0),
2月1日,
3月2日,
四月三日,
....
12月11日;
月份(整数索引){this.index=index;}
整数指数;
int getIndex(){return index;}
}
迭代器termIncomeKeys=termIncome.keySet().Iterator();
while(termIncomeKeys.hasNext()){
字符串month=termIncomeKeys.next();
字符串str[]=month.split(“”);
字符串m0=str[0],m1=str[1];
字符串y0=mo.substr(m0.indexOf('(')+1,mo.lastIndexOf('));
字符串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();
}
假设同一年:
Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
while(termIncomeKeys.hasNext()){
String month = termIncomeKeys.next();
System.out.println(month);
}
enum月{
一月(0),
2月1日,
3月2日,
四月三日,
....
12月11日;
月份(整数索引){this.index=index;}
整数指数;
int getIndex(){return index;}
}
迭代器termIncomeKeys=termIncome.keySet().Iterator();
while(termIncomeKeys.hasNext()){
字符串month=termIncomeKeys.next();
字符串str[]=month.split(“”);
字符串m0=str[0],m1=str[1];
字符串y0=mo.substr(m0.indexOf('(')+1,mo.lastIndexOf('));
字符串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-11),并将年份转换为数字。
区别在于
*12+
,其中
可能是负数。我不知道是否有现成的类可以为您解析这些字符串,但逻辑很简单:
将三个字母的月份转换为数字(例如0-11),并将年份转换为数字。
差异是
*12+
,其中
可能是负数。年份不一样。可以不同吗请填写枚举部分?谢谢。但它打印0作为2012年1月至2012年1月之间的持续时间。它应该是2012年1月至2012年1月逻辑上为零!您可以将1添加到每个结果中。请将您的编辑还原为以前的代码。我通过将持续时间增加1来解决此问题。年份不同。是否可以不同请完成枚举部分?谢谢。但它会将0打印为2012年1月至2012年1月之间的持续时间。它应该是1。2012年1月至2012年1月逻辑上为零!您可以在每个结果中添加1。请将您的编辑还原为以前的代码。我通过将持续时间增加1来解决此问题。