使用方法去完成

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练习题--万年历的更多相关文章

  1. scala练习题1 基础知识

    1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等:     2,在scala REPL中,计算3的平方根,然 ...

  2. Scala 练习题 学生分数案例

    一.相关信息题目:1.统计班级人数2.统计学生的总分3.统计总分年级排名前十学生各科的分数4.统计总分大于年级平均分的学生5.统计每科都及格的学生6.统计偏科最严重的前100名学生数据样例(部分数据) ...

  3. scala,spark练习题提高

    1.求每家公司有哪些产品 val arr3 = List("Apache" -> "Spark", "Apache" -> &q ...

  4. Scala(一) —— 基础

    一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateT ...

  5. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  6. 8. Scala面向对象编程(高级部分)

    8.1 静态属性和静态方法 8.1.1 静态属性-提出问题 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决 8.1.2 基本介绍 -Sca ...

  7. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  8. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...

  9. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

随机推荐

  1. centos7安装mysql5.7(rpm安装版)

    1.下载mysql5.7的rpm安装包 rpm的mysql包,安装起来简单,解压版的mysql还需要做许多配置,稍有不慎就会出错!!! 下载地址:https://dev.mysql.com/downl ...

  2. oracle 创建表、删除表、添加字段、删除字段、表备注、字段备注、修改表属性

    1.创建表 create table 表名( classid number() primary key, 表字段 数据类型 是否允许为空(not null:不为空/null:允许空) 默认值(defa ...

  3. windows7系统 执行应用程序报 Error accessing specified device (Error: 2)

    --------------------------- ---------------------------Error accessing specified device (Error: 2) - ...

  4. Laravel向表里插入字段

    执行: php artisan make:migration add_字段_to_表名_table --table=表名 此时在database/migrations文件夹下会生成一个相应文件,更改如 ...

  5. mysql用查询结果当删除的判断条件进行删除报错1093 You can't specify target table解决方法

    mysql用查询结果当删除的判断条件进行删除报错1093 You can't specify target table解决方法 #分开两个sql执行正常的语句,只保留最新1000条数据,删掉1000条 ...

  6. php从数据库里取出的数据列表里添加一个属性实战例子

    php从数据库里取出的数据列表里添加一个属性实战例子:$opendata = $this->omitmodel->getHistory(1,1);var_dump($opendata);f ...

  7. 不了解MES系统中的看板管理?看完本文就懂了

    如果想要在生产车间中,让生产过程管理都处在“看得见”的状态,那么看板可视化管理的导入是你的不二选择. MES看板包括四个部分:生产任务看板.各生产单位生产情况看板.质量看板和物料看板,其中生产任务看板 ...

  8. 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    目录 0.概述websocket 1.app.js写法 2.后台写法 0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ...

  9. 如何在unbuntu 16.04上离线部署openssh

    背景:由于部署环境不能联网,为了方便文件传输,需要用到openssh.故实施步骤是,先在可以联网机器上下载离线包,然后用U盘拷贝到部署环境中. 第一步:下载离线包,下载网址:https://packa ...

  10. 其他综合-CentOS7 安装 Jumpserver 跳板机

    CentOS7 安装 Jumpserver 跳板机 1.实验描述 搭建 jumpserver 平台,实现有效的运维安全审计.完美做到事先防范,事中控制和事后溯源 2.实验环境 物理机系统:Window ...