我是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表示法工作感到困惑。希望得到一些帮助。
答案 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]