java - 制作从一周中的指定一天开始的日历

标签 java for-loop calendar

好的,所以我正在尝试制作一个日历,允许用户输入该月第一个星期一的日期以及该月的总天数。

输出应如下所示: (参见链接图片)

IMAGE

这是我到目前为止所拥有的:

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");
    }
}

sample output with printCalendar(3, 31);

关于java - 制作从一周中的指定一天开始的日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865535/

相关文章:

java - 使用哈希密码时凭据不正确

java - 为什么这个 Android 代码这么慢?

javascript - 如何知道 javascript for 语句中的所有结果是否都是错误的

javascript - 如何一键同时计算多个输入?

c++ - 循环抛出 "parser stack overflow, program too complex"的编译时间

java - 日历偏移问题

java - 需要传递变量和标记 JPanel 的帮助

java - 从 JBoss 使用 JAX-WS RI

java - 以两位数格式显示日期

android - android中的自定义日历日 View