Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在迭代器中查找内容之间的持续时间(以月为单位)_Java - Fatal编程技术网

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来解决此问题。