Java for循环打印一年中的每个月

时间:2016-10-06 18:31:11

标签: java for-loop

以下java代码将从1开始打印数字1-10。如何使用相同的代码结构在1月,2月,3月等一次打印出一年中的所有月份?

public class s {
    public static void main(String[] args) {
        for(int i = 1; i <= 10; i++) {
            System.out.println(i);          
        }
    }
}

5 个答案:

答案 0 :(得分:5)

如果你想继续使用java api:

public static void main(final String[] args) {
    // java 8
    Arrays.stream(Month.values())
          .forEach(System.out::println);

    // java < 8
    for (final Month month : Month.values()) {
        System.out.println(month);
    }
}

答案 1 :(得分:1)

如果你想以旧时尚的方式做到这一点,并且有更多的动手来学习数组:

String[] months = new String[] { "January", "February", "March" };

for (int i = 0; i < months.length; i++) {
    System.out.println(months[i]);
}

或者更简洁一点:

for (String month : months) {
    System.out.println(month);
}

您可以了解有关数组的更多信息,并查看documentation中的一些教程。

答案 2 :(得分:1)

Month

best correct Answer is by staszek巧妙地使用Streams。这是相同的想法,但使用老式语法而不是Streams,加上一些评论。

Month enum定义了十几个实例,一年中每月一个,1月至12月的编号为1-12。 Month.getValues方法返回所有12个实例的数组。我们可以使用Java语法为“增强的for循环”循环该数组,也称为“for-each”。

您可以通过getDisplayName方法询问当月的本地化名称。为缩写的长度指定TextStyle,为翻译中使用的人类语言和文化规范指定Locale

TextStyle ts = TextStyle.FULL;
Locale l = Locale.CANADA_FRENCH;

for ( Month month : Month.values () ) {
    int monthNumber = month.getValue (); // 1-12.
    String monthName = month.getDisplayName ( ts , l );
    System.out.println ( "month: " + month + " | monthNumber: " + monthNumber + " | monthName: " + monthName );
}
month: JANUARY | monthNumber: 1 | monthName: janvier
month: FEBRUARY | monthNumber: 2 | monthName: février
month: MARCH | monthNumber: 3 | monthName: mars
month: APRIL | monthNumber: 4 | monthName: avril
month: MAY | monthNumber: 5 | monthName: mai
month: JUNE | monthNumber: 6 | monthName: juin
month: JULY | monthNumber: 7 | monthName: juillet
month: AUGUST | monthNumber: 8 | monthName: août
month: SEPTEMBER | monthNumber: 9 | monthName: septembre
month: OCTOBER | monthNumber: 10 | monthName: octobre
month: NOVEMBER | monthNumber: 11 | monthName: novembre
month: DECEMBER | monthNumber: 12 | monthName: décembre

请参阅Oracle Tutorials

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date.Calendar和&amp; java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 3 :(得分:0)

你会试试吗

String[] months = new DateFormatSymbols().getMonths();
for (int i = 0; i <12; i++) {
     System.out.println("month = " + months[i]);
}

答案 4 :(得分:0)

试试这个解决方案:

String[] months = new DateFormatSymbols().getMonths();
    for(String singleMonth: months){
        System.out.println(singleMonth);
    }