Java使用for循环打印日历(逻辑帮助)

标签 java for-loop

我的作业要在月底到期,而且我已经完成了一半。我们必须使用泽勒同余来计算 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/

相关文章:

java - For 循环在搜索 ArrayList 时跳过每隔一行

Java 处理子进程

java - 无法使用ant构建java项目

java - 如何在 TopLink 中获取 Count 查询的结果?

python - 将长代码编写为嵌套列表理解

javascript - 如何在 HTML 中的 for 循环中使用文档

java - 为什么这会给我这个 arrayoutofbounds 错误?

java - 如何为 OkHttpClient 设置超时?

javascript - Protractor 在页面对象中获取陈旧元素引用

php - 使用多个 MySQL 行和 For Loop - 不工作