好的,所以我正在尝试制作一个日历,允许用户输入该月第一个星期一的日期以及该月的总天数。
输出应如下所示: (参见链接图片)
这是我到目前为止所拥有的:
int daysLeft = numDays;
for(int week = 1; week <= 5; week++)
{
if(daysLeft > 1)
{
for(int day = 1; day <= numDays; day++)
{
if((day % 7) == 1) , if the day % 7 (a week) is equal to 1 then go to the next line
{
System.out.println();
}
System.out.print(day);
daysLeft--;
}
}
}
我想为此使用嵌套 for 循环,我知道这是可以完成的,并且我知道我可以使用日历类,但我正在学习并希望使用 for 循环。因此,如果第一个星期一也是第一天,上面的代码就可以工作。
完成所有这些后,根据上述信息,我如何才能使用 for 循环来更改月份的起始位置?
编辑 忽略闰年。
最佳答案
1)您可能不需要嵌套的 for 循环,您的外部 for 循环实际上什么也没做
2)我仍然有点不清楚你的要求,这是我能想到的最好的,我认为它很好地满足了你的描述:
public static void printCalendar(int monday, int numDays) {
if (monday > 7 || monday < 1) throw new IllegalArgumentException("Invalid monday.");
if (numDays > 31 || numDays < 1 || numDays < monday) throw new IllegalArgumentException("Invalid numDays.");
System.out.print("Mon\t");
System.out.print("Tue\t");
System.out.print("Wed\t");
System.out.print("Thur\t");
System.out.print("Fri\t");
System.out.print("Sat\t");
System.out.print("Sun\t");
System.out.println();
int padding = (7 - (monday - 1)) % 7;
for (int i = 0; i < padding; i++) {
System.out.print(" \t");
}
for (int day = 1; day <= numDays; day++) {
if ((padding + day) % 7 == 0)
System.out.println(day + "\t");
else
System.out.print(day + "\t");
}
}
关于java - 制作从一周中的指定一天开始的日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865535/