使用Java string.format()进行打印

时间:2018-04-17 12:51:34

标签: java string format

我是java的新手,我编写了一个代码来打印出某个范围和输出之间的闰年,我希望每行打印3个闰年,每年用逗号分隔。

例如,在1999年到2045年之间,我想要的输出是:

2000,2004,2008
2012,2016,2020
2024,2028,2032
2036,2040,2044

我写了代码:

for (int year = 1999; year<2045; year ++) {
            if (((year%4 == 0) && (year%100 !=0)) || (year%400==0)) {
                System.out.println(String.format(format, year));   #issue here
            }
}

我对String格式如何通过我打算在打印时使用的String.format表示法工作感到困惑。希望得到一些帮助。

3 个答案:

答案 0 :(得分:1)

如果没有一些条件陈述就无法实现,最好这样做:

for (int year = 1999; year < 2045; year++) {
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {         
        System.out.print(year);
        column++;
        if (column % 3 == 0) {
            System.out.println();
        } else {
            System.out.print(",");
        }
    }
}

答案 1 :(得分:0)

您可以使用%tY作为year.it的格式,将以四位数字格式化年份。

String.format("%tY", year)

这是我尝试过的代码:

import java.util.Calendar;

public class MyClass {
    public static void main(String args[]) {
        int year;
          Calendar cal = Calendar.getInstance();
        for (year = 1999; year<2045; year ++) {
            if (((year%4 == 0) && (year%100 !=0)) || (year%400==0)) {
                cal.set(year, 0, 0);
                System.out.println(String.format("%1$tY", cal));   
            }
        }
    }
}

答案 2 :(得分:0)

String.format()粗略地接受第一个字符串参数,它是你想要的“布局”,使用以%表示变量类型的开头的说明符(%s代表字符串,%d代表数字等)和下一个系列参数是实际数据 - 应该与数字和顺序中格式布局中的说明符数相匹配:

    int[] years = new int[3];
    int i = 0;
    for (int year = 1999; year < 2045; year++) {
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
            years[i++] = year;
            if (i > 2) {
                System.out.println(String.format("%d,%d,%d", years[0], years[1], years[2]));
                i = 0;
            }
        }
    }

2000,2004,2008
2012,2016,2020
2024,2028,2032
2036,2040,2044

String.format()对于这种情况感觉有些过分。您可以(大致)在我的特定解决方案中完成相同的任务,而无需使用以下格式:

 System.out.println(Arrays.toString(years));

除了在这个例子中使用的int数组周围也有方括号。

[2000, 2004, 2008]
[2012, 2016, 2020]
[2024, 2028, 2032]
[2036, 2040, 2044]