Java语言】JAVA控制台显示问题

2020-05-14 08:30发布

如何用JAVA语言在控制台中输出当前的月历?

如何用JAVA语言在控制台中输出当前的月历?

1条回答
import java.util.Scanner;
 
//运行这段代码记得修改类名和包名
public class HomeWork {
 
    /*
     * @ 利用简单的for,switch,if语句实现打印输入年月的月份表 。
     * 
     * @ 该程序只做练习用,不考虑非法输入情况
     */
    public static void main(String[] args) {
 
      int date = 0; // 存放输入的年月后计算得到的1号的星期
      int day_max = 0;// 存放输入的年月的月的天数

      int year = 0;// 用来保存输入的年份
      int month = 0;// 用来保存输入的月份

      Scanner in = new Scanner(System.in);
      System.out.print("请输入年份:");
      year = in.nextInt();
      System.out.print("请输入月份:");
      month = in.nextInt();
      System.out.println("输入的日期为:" + year + "-" + month);
      in.close();

      int day_sum = 0;
      // 对1900~year之间的年份进行累加天数
      for (int i = 1900; i < year; i++) {
         // 判断是否是闰年
         if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {
         // 闰年366天
         day_sum += 366;
         } else {
         // 平年365天
         day_sum += 365;
         }
      } // for

      // 对月份进行累加计算
      for (int i = 1; i < month; i++) {
         switch (i) {
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
         day_max = 31;
         day_sum += 31;
         break;
         case 2:
         // 判断是否是闰年
         if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {
            // 闰年2月29
            day_sum += 29;
         } else {
            // 平年2月28
            day_sum += 28;
         }
         break;
         default:
         day_sum += 30;
         break;
         }
      } // for

      date = 1 + day_sum % 7; // 存放输入的日期计算得到的星期,1900年1月1日星期一
      System.out.println("输入的日期为:" + year + "-" + month + ",这个月的1号是星期" + date);
      // 如果是星期日,开头则 不用空出来距离
      // 此处之后date变量表示这月1号前面制表符的个数
      if (date == 7) {
         date = 0;
      }
      // 判断这个月份多少天
      switch (month) {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
         day_max = 31;
         break;
      case 2:
         // 判断是否是闰年
         if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {
         // 闰年2月29
         day_max = 29;
         } else {
         // 平年2月28
         day_max = 28;
         }
         break;
      default:
         day_max = 30;
         break;
      }
      System.out.println("==================================================");

      // 输出表头
      System.out.print("日\t一\t二\t三\t四\t五\t六\n");

      int day = 1;// 打印的天数

      for (int i = 0; i < 5; i++) {
         for (int j = 0; j < 7; j++) {
         // 打印第一行的时候,空出前date个空间
         if (i == 0 && j < date) {
            System.out.print("\t");
            // 跳出当前次循环
            continue;
         }

         if (day > day_max) {
            break;
         }
         System.out.print(day + "\t");
         day++;
         }
         // 打印完一行后换行
         System.out.println();
      }
      System.out.println("==================================================");
    }
}

日历.png

相关问题推荐

  • 回答 7
    已采纳

    里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一...

  • 回答 8
    已采纳

    心里有个预期,然后看看是以什么目的进这家企业工作,要是赚钱的话,那就多要点,要是学习的话,可以根据情况要一个能养活自己的价格。

  • 回答 4
    已采纳

    Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。首先...

  • 回答 15
    已采纳

    现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。分布式架构其实就是分布式系...

  • 回答 10

    1、监控GC的状态使用各种JVM工具,查看当前日志,分析JVM参数的设置,分析堆内存快照和GC日志,根据实际的各区域的内存划分和GC的执行时间,判断是否需要进行优化2、分析结果、判断是否需要优化如果各项参数设置合理,系统没有超时的日志出现,GC频率也不高,...

  • 回答 6

    MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以...

  • 回答 6

    学vue应该要先学习javascript 的基础知识和用法。

  • 回答 8

    1、lambda是jdk8的新特性2、使用lambda的前提,必须是一个接口,接口只能有一个抽象方法3、Lambda 表达式的简单例子:// 1. 不需要参数,返回值为 5  () -> 5    // 2. 接收一个参数(数字类型),返回其2倍的值  x -> 2 * x    // 3. 接受2个参数(数...

  • 回答 5

    你没有把jdk配置到eclipse里,步骤如下:打开eclipse,菜单栏找到window -> preference -> java -> install jres -> add -> standard vm -> 设置好相应的jre home就可以了。

  • 回答 8

    使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。...

  • 回答 11

    1. 区别:堆和栈区别堆:主要用于储存实例化的对象,数组。由JVM动态分配内存空间。一个JVM只有一个堆内存,线程是可以共享数据的。栈:主要用于储存局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。2. 堆内存和栈内...

  • 回答 18

    至少h5、CSS、JS,包括数据库连接技术,ajax都要会哦

  • 回答 7

    对于一个秒杀系统来说,瞬时的大量请求会对后台服务造成冲击,需要保证服务的可用性以及业务的正确性。设计了一个高并发高可用的系统简要流程架构如下图:1.将商品(或券)的信息等静态数据放到cdn节点,实现动静分离2.业务请求和业务处理之间使用MQ对请求进行削...

  • 回答 16

    为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事...

  • 回答 10

    封装就是把抽象出来的JAVA类的变量和方法集成为一个集体,就像集成电路元件成为一个独立的芯片一样,它只留出对外的接口,使用者可以直接使用它,但看不到其内部是怎样实现的,JAVA类的封装就是对外而言能直接使用它来定义的对象去调用相关变量和方法。...

  • 回答 4

    1. java.awt:提供了绘图和图像类,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。2. java.lang:java的语言包,是核心包,默认导入到用户程序,包中有object类,数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错...

没有解决我的问题,去提问