我的作业要在月底到期,而且我已经完成了一半。我们必须使用泽勒同余来计算 1 号降落的星期几。从那时起(并考虑闰年),您必须使用循环打印相应年份的日历。老师说这应该是一个非常短的程序,我们不应该试图强行程序的逻辑(基本上,每个月不要使用一堆 if else 和循环)。 我已经有了数学计算和闰年部分,但由于多种原因,我无法理解如何使这个 for 循环工作:
- 我将如何考虑每个月的空格?比如我实际上需要多少个嵌套循环?
- 我是否需要为闰年、31 天的月份和 30 天的月份等编写不同的循环,或者所有这些都可以用 1 个巨大的嵌套循环来处理吗?
例如,我刚刚开始编写一个 for 循环,只是为了看看是否可以打印出典型的 31 天日历无需任何特殊格式(空格、月份名称、日期等)。这是我使用 for 循环的第一次测试:
for(int i = 1; i < 31; i++)
{
for(int j = 0; j < 7; j++)
{
System.out.print(i + "\t");
i++;
if(j == 6){
i--;}
if(i > 31)
{
break;
}
}
System.out.print("\n");
}
使用多个月和空格背后的逻辑是什么。我欢迎所有帮助,但请不要给我源代码。我希望用我编写的代码来完成这件事,并且就像我说的那样,这也是一项作业,我不会真正从复制和粘贴代码中学习。请告诉我我需要使用的逻辑。对于特殊情况,我可以使用所有其他条件。谢谢大家。
最佳答案
好吧,您需要管理在一组固定值之间变化的内容,因此您基本上需要一种从循环内访问这些变量数据的方法。
解决这个问题的最佳工具可能是数组。
如果您存储在数组中,例如几个月的持续时间,您将能够以直接的方式(通过索引)访问它们,这样您就不需要任何条件链,您只需要索引当前月份,例如 monthDurations[i] == 31
。
如果您想更好地构建所有内容,您可以定义自己的 Month
类或 Day
类或任何您需要跟踪打印问题的内容(例如空格或名称) )以便一切都可以轻松封装和维护。
关于Java使用for循环打印日历(逻辑帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479740/