使用方法去完成
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) } }