java给年月来打印日历,输出有问题

输出的时候出现了问题,请各位帮忙看一下
题:输入年份以及月份,大于1900时打印出该年该月份的日历
思路:求1900年到输入年份之间的累计天数以及1月到输入月份之间的累计天数。得到1900-1-1到输入年月之前所有天数,用总天数对7求余,对余数加1,该数值即为该月1号的星期。判断输入月份有多少天,打印日历。
以下是代码:


import java.util.Scanner;
public class Calendar{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
int month=sc.nextInt();
int r=0;
int sum=0;
if(year<1900){
  System.out.println("请输入大于或等于1900的年份");
}else{
  System.out.println("==================================================");
  System.out.println("日\t一\t二\t三\t四\t五\t六");

  for(int i=1900;iif((i%4==0&&i%100!=0)||i%400==0){
      sum+=366;
  }
  else{sum+=365;}
  }

  for(int i=1;i<=month;i++){
    switch(i){
       case 1:
       case 3:
       case 5:
       case 7:
       case 8:
       case 10:
       case 12:
       r=31;
       break;

       case 4:
       case 6:
       case 9:
       case 11:
       r=30;
       break;

       case 2:
       if ((year%4==0&&year%100!=0)||year%400==0){
       r=29;}
       else{
       r=28;}
       break; 
     }

     if(iprintln(sum);
  int count=(sum+1)%7;
  System.out.println(count);
  for(int i=1;i<=count;i++)
  System.out.print("\t");

  for(int i=1;i<=r;i++){
    System.out.printf("%d\t",i);

    if((i+count)%7==0)
    System.out.println();
  }

  System.out.println();
  System.out.println("=================================================");
}
}
  }

输出情况:

img

System.out.println(sum);
System.out.println(count);
这个去掉啊

去掉中间的输出语句。


import java.util.Scanner;
public class Calendar{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
int month=sc.nextInt();
int r=0;
int sum=0;
if(year<1900){
  System.out.println("请输入大于或等于1900的年份");
}else{
  System.out.println("==================================================");
  System.out.println("日\t一\t二\t三\t四\t五\t六");
  for(int i=1900;i<year;i++){
    if((i%4==0&&i%100!=0)||i%400==0){
      sum+=366;
  }
  else{sum+=365;}
  }
  for(int i=1;i<=month;i++){
    switch(i){
       case 1:
       case 3:
       case 5:
       case 7:
       case 8:
       case 10:
       case 12:
       r=31;
       break;
       case 4:
       case 6:
       case 9:
       case 11:
       r=30;
       break;
       case 2:
       if ((year%4==0&&year%100!=0)||year%400==0){
       r=29;}
       else{
       r=28;}
       break; 
     }
     if(i<month)
     sum+=r;
  }
  

  for(int i=1;i<=r;i++){
    System.out.printf("%d\t",i);
    if((i+count)%7==0)
    System.out.println();
  }
  System.out.println();
  System.out.println("=================================================");
}
}
  }


img

基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)

这是修改后的代码

import java.util.Scanner;

public class Calendar {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        int month = sc.nextInt();
        int r = 0;
        int sum = 0;
        if (year < 1900) {
            System.out.println("请输入大于或等于1900的年份");
        } else {
            System.out.println("==================================================");
            System.out.println("日\t一\t二\t三\t四\t五\t六");

            for (int i = 1900; i < year; i++) {
                if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
                    sum += 366;
                } else {
                    sum += 365;
                }
            }

            for (int i = 1; i < month; i++) {
                switch (i) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        sum += 31;
                        break;

                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        sum += 30;
                        break;

                    case 2:
                        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                            sum += 29;
                        } else {
                            sum += 28;
                        }
                        break;
                }
            }

            int count = sum % 7;
            System.out.println(count);
            for (int i = 1; i <= count; i++)
                System.out.print("\t");

            r = (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) ? 29 : (month == 2 ? 28 : (month == 4 || month == 6 || month == 9 || month == 11 ? 30 : 31));

            for (int i = 1; i <= r; i++) {
                System.out.printf("%d\t", i);

                if ((i + count) % 7 == 0)
                    System.out.println();
            }

            System.out.println();
            System.out.println("=================================================");
        }
    }
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/738883
  • 除此之外, 这篇博客: java日志框架(一)JUL 学习 ,这个是什么,他在代码中如何使用,一篇文章讲清楚中的 日志对象父子关系 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述

        // Logger对象父子关系
        @Test
        public void testLogParent()throws Exception{
    
            Logger logger1 = Logger.getLogger("com.controller.JULTest");
            Logger logger2 = Logger.getLogger("com.controller");
    
            // 测试
            System.out.println(logger1.getParent() == logger2);
            // 所有日志记录器的顶级父元素 LogManager$RootLogger,name 为  ""
            System.out.println("logger2 Parent:"+logger2.getParent() + ",name:" + logger2.getParent().getName());
    
            // 关闭默认配置
            logger2.setUseParentHandlers(false);
    
            // 设置logger2日志级别
            // 自定义配置日志级别
            // 创建ConsolHhandler 控制台输出
            ConsoleHandler consoleHandler = new ConsoleHandler();
    
            // 创建简单格式转换对象
            SimpleFormatter simpleFormatter = new SimpleFormatter();
    
            // 进行关联
            consoleHandler.setFormatter(simpleFormatter);
            logger2.addHandler(consoleHandler);
    
    
            // 配置日志具体级别
            logger2.setLevel(Level.ALL);
            consoleHandler.setLevel(Level.ALL);
    
            logger1.severe("severe");
            logger1.warning("warning");
            logger1.info("info");
            logger1.config("config");
            logger1.fine("fine");
            logger1.finer("finer");
            logger1.finest("finest");
        }