• scala练习题--万年历


     使用方法去完成

    import scala.io.StdIn
    
    object work1 {
      def main(args: Array[String]): Unit = {
        //    1.先输出提示语句,并接受用户输入的年,月
        println("请输入年:")
        var year = StdIn.readInt()
        println("请输入月:")
        var month = StdIn.readInt()
    
        //    2.根据用户输入的年,先判断是否是闰年
        def reiNian(nian: Int): Boolean = {
          if (nian % 400 == 0) {
            return true
          }
          if (nian % 4 == 0 && nian % 100 != 0) {
            return true
          } else false
        }
    
        //    3.根据用户输入的月来判断月的天数
        def getNowMonthDays(year: Int, month: Int): Int = {
          if (month == 4 || month == 6 || month == 9 || month == 11) {
            return 30
          } else if (month == 4) {
            return if (reiNian(year)) 29 else 28;
          } else return 31
        }
    
        //    4.用循环计算用户输入的年份距离1900年1月1日的总天数
        def getFormNowYearTo1900TotalDays(year: Int): Int = {
          var sumdayyear = 0
          for (i <- 1900 to year) {
            sumdayyear = sumdayyear + (if (reiNian(year)) 366 else 365)
          }
          return sumdayyear
        }
    
        //    5.用循环计算用户输入的月份距输入的年份的1月1日共有多少天
        def getNowYearToDays(year: Int, month: Int): Int = {
          var sumday = 0
          for (i <- 1 to month) {
            sumday = sumday + getNowMonthDays(year, i)
          }
          return sumday
        }
    
        //    6.相加第4步与第5步的天数,得到总天数.
        var totalDaysY = getFormNowYearTo1900TotalDays(year);
        var totalDaysM = getNowYearToDays(year, month);
        var totalDays = totalDaysY + totalDaysM
    
        //    7.用(总天数+ 1)%7来计算输入的月的第一的星期数
        def getweek(totalDays: Int): Int = {
          return (totalDays + 1) % 7
        }
    
        //    8.根据第7步得到的值格式化输出这个月的日历
        def FormatCalendar(week: Int, year: Int, month: Int): Unit = {
          var cut = 0; //记数  判断是否是到7 如果到7就换行
          println("星期日		星期一		星期二		星期三		星期四		星期五		星期六")
          //星期数的打印
          for (i <- 1 to week) {
            print("		")
            cut = cut + 1
          }
          //打印月份对应天数
          for (i <- 1 to getNowMonthDays(year, month)) {
            //打印值
            print(i + "		");
            cut = cut + 1
            if (cut % 7 == 0) {
              println()
            }
          }
        }
        FormatCalendar(getweek(totalDays), year, month)
      }
    }
    

      使用函数去完成

    import scala.io.StdIn
    
    object work2 {
      def main(args: Array[String]): Unit = {
        //    1.先输出提示语句,并接受用户输入的年,月
        println("请输入年:")
        var year = StdIn.readInt()
        println("请输入月:")
        var month = StdIn.readInt()
    
        //    2.根据用户输入的年,先判断是否是闰年
    
        val reiNian=(year:Int)=> {
          if (year % 400 == 0) {
             true
          }
          if (year % 4 == 0 && year % 100 != 0) {
             true
          } else false
        }
    
        //    3.根据用户输入的月来判断月的天数
        val getNowMonthDays=(year: Int, month: Int) =>{
          if (month == 4 || month == 6 || month == 9 || month == 11) {
              30
          } else if (month == 4) {
             if (reiNian(year))  29 else  28
          } else   31
        }
    
        //    4.用循环计算用户输入的年份距离1900年1月1日的总天数
        val getFormNowYearTo1900TotalDays=(year: Int)=>{
          var sumdayyear:Int =0
          for (i <- 1900 to year) {
            sumdayyear = sumdayyear + (if (reiNian(year)) 366 else 365)
          }
          println(sumdayyear)
           sumdayyear
        }
        println("****")
        //    5.用循环计算用户输入的月份距输入的年份的1月1日共有多少天
        val getNowYearToDays=(year:Int,month:Int)=> {
          var sumdaymonth:Int= 0
          for (i <- 1 to month) {
            sumdaymonth = sumdaymonth + getNowMonthDays(year, i)
          }
          println("****")
          println(sumdaymonth)
          sumdaymonth
        }
    
        //    6.相加第4步与第5步的天数,得到总天数.
        var totalDaysY:Int = getFormNowYearTo1900TotalDays(year)
        var totalDaysM:Int = getNowYearToDays(year, month)
        var totalDays = totalDaysY + totalDaysM
    
        //    7.用(总天数+ 1)%7来计算输入的月的第一的星期数
        val getweek=(totalDays: Int)=> {
           (totalDays + 1) % 7
        }
    
        //    8.根据第7步得到的值格式化输出这个月的日历
        val FormatCalendar=(week: Int, year: Int, month: Int) => {
          var cut = 0; //记数  判断是否是到7 如果到7就换行
          println("星期日	星期一	星期二	星期三	星期四	星期五	星期六")
          //星期数的打印
          for (i <- 1 to week) {
            print("		")
            cut = cut + 1
          }
          //打印月份对应天数
          for (i <- 1 to getNowMonthDays(year, month)) {
            //打印值
            print(i + "		");
            cut = cut + 1
            if (cut % 7 == 0) {
              println()
            }
          }
        }
        FormatCalendar(getweek(totalDays), year, month)
      }
    }
    

      

  • 相关阅读:
    [小技巧] micropython 如何执行 *.mpy 文件
    从零开始深入 Linux 底层(软件工程)
    从嵌套结构中取值时如何编写兜底逻辑
    学习JUC源码(2)——自定义同步组件
    学习JUC源码(1)——AQS同步队列(源码分析结合图文理解)
    Java多线程中的wait/notify通信模式
    详解Java锁的升级与对比(1)——锁的分类与细节(结合部分源码)
    认识Redis集群——Redis Cluster
    工作三年多的感慨与总结(二)
    工作三年多的感慨与总结(一)
  • 原文地址:https://www.cnblogs.com/liangyan131/p/11999758.html
Copyright © 2020-2023  润新知