【问题标题】:Find the Duration in Months between the contents in an Iterator查找迭代器中内容之间的持续时间(以月为单位)
【发布时间】:2012-05-19 02:45:55
【问题描述】:

代码:

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

月份打印为

2012 年 1 月 - 2012 年 1 月

2012 年 2 月 - 2012 年 3 月

2012 年 4 月 - 2012 年 5 月

六月(2012 年) - 六月(2012 年)

2012 年 7 月 - 2012 年 10 月

我想要实现的是我想在每个条目之间以月为单位打印持续时间。也就是说,第一个条目之间的持续时间是 1 个月,第二个条目之间的持续时间是 2 等等。

【问题讨论】:

    标签: java


    【解决方案1】:

    不知道有没有现成的类可以帮你解析这些字符串,不过逻辑很简单:

    将三个字母的月份转换为数字(例如 0-11),并将年份转换为数字。 区别在于&lt;year-diff&gt;*12 + &lt;month-diff&gt;,其中&lt;month-diff&gt; 可能为负数。

    【讨论】:

      【解决方案2】:

      假设同一年:

      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 作为 Jan(2012) - Jan(2012) 之间的持续时间。它应该是 1。
      • Jan(2012) - Jan(2012) 在逻辑上为零!您可以为每个结果加 1。
      • 请将您的编辑恢复为之前的代码。我确实设法通过将持续时间增加 1 来解决它。
      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多