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("星期日\t\t星期一\t\t星期二\t\t星期三\t\t星期四\t\t星期五\t\t星期六")
      //星期数的打印
      for (i <- 1 to week) {
        print("\t\t")
        cut = cut + 1
      }
      //打印月份对应天数
      for (i <- 1 to getNowMonthDays(year, month)) {
        //打印值
        print(i + "\t\t");
        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("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六")
      //星期数的打印
      for (i <- 1 to week) {
        print("\t\t")
        cut = cut + 1
      }
      //打印月份对应天数
      for (i <- 1 to getNowMonthDays(year, month)) {
        //打印值
        print(i + "\t\t");
        cut = cut + 1
        if (cut % 7 == 0) {
          println()
        }
      }
    }
    FormatCalendar(getweek(totalDays), year, month)
  }
}
scala练习题--万年历的更多相关文章
- scala练习题1 基础知识
		1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等: 2,在scala REPL中,计算3的平方根,然 ... 
- Scala 练习题 学生分数案例
		一.相关信息题目:1.统计班级人数2.统计学生的总分3.统计总分年级排名前十学生各科的分数4.统计总分大于年级平均分的学生5.统计每科都及格的学生6.统计偏科最严重的前100名学生数据样例(部分数据) ... 
- scala,spark练习题提高
		1.求每家公司有哪些产品 val arr3 = List("Apache" -> "Spark", "Apache" -> &q ... 
- Scala(一) —— 基础
		一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateT ... 
- 【大数据】Scala学习笔记
		第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ... 
- 8. Scala面向对象编程(高级部分)
		8.1 静态属性和静态方法 8.1.1 静态属性-提出问题 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决 8.1.2 基本介绍 -Sca ... 
- jdb调试scala代码的简单介绍
		在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ... 
- 牛顿法求平方根 scala
		你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ... 
- Scala集合和Java集合对应转换关系
		作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ... 
随机推荐
- tkinter为多个窗口设置相同的icon报错
			import threading import tkinter from PIL import Image, ImageTk def show_window(): window = tkinter.T ... 
- 【已解决】git怎么合并多个分支到主干master
			git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: 去自己的工作分支$ git checkout workbranch 工作.... 提交工作 ... 
- 获取List<object>中对象的属性值
			List<object> ls = new List<object>(); ls.Add(,name="sqm"}); ls.Add(,name=" ... 
- Linux 读写锁
			线程的读写锁函数: 1,读写锁的初始化与销毁,静态初始化的话,可以直接使用PTHREAD_RWLOCK_INITIALIZER. #include <pthread.h> int pthr ... 
- Python从零开始——循环语句
			一:Python循环语句知识概览 二:while循环 三:for遍历 四:循环控制 
- C语言的暂停
			#include<stdio.h> int main(void) { printf("Hello, World!\n"); system("pause&quo ... 
- flask flask_session,WTForms
			一.Flask_session 本质上,就是是cookie 下的session存储在redis中,方便快速取得session from flask import Flask,session from ... 
- 201871010110-李华《面向对象程序设计(java)》第十五周学习总结
			博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ... 
- 如何有效的清理yum缓存
			如果遇到下面问题,请执行下面命令 yum clean all #清除缓存 
- mysql版本引起的驱动问题
			mysql版本引起的驱动问题 com.mysql.jdbc.Driver 是 mysql-connector-java 5中的, com.mysql.cj.jdbc.Driver 是 mysql-co ... 
