使用方法去完成

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. 【spring】全局异常 globalexception 处理

    全局异常 globalexception 处理   一般在做api开发时我们希望将所有业务层抛到controller异常都集中处理一下.比如对异常差异化报警.转发不同页面.封装不同http状态码.集中 ...

  2. mssql附加的数据库查询的时候没有搜索权限

    1.选中数据安全性-登录名-选择某个账户-右键-属性 2.服务器角色-选择public和systemadmin 3.用户映射-选中库-下面选中public 和owner

  3. 学习shiro第二天

    昨天讲了shiro的认证流程以及代码实现,今天将对这个进行扩展. 因为我们的测试数据是shiro.ini文件中配置的静态数据,但实际上数据应该从数据库中查询出来才合理,因此我们今天讲讲JdbcReal ...

  4. Ext.create方法分析

    Ext.create方法实际上是Ext.ClassManager的instantiate的别名 分析如下: (function(Class, alias, arraySlice, arrayFrom, ...

  5. 英语cartialgenous鹿茸cartialgenous单词

    鹿茸cartialgenous是雄鹿未骨化密生茸毛的幼角,主要从梅花鹿和马鹿头上采收,前者叫花鹿茸.黄毛茸,后者叫青毛茸.雄鹿到了一定年纪头上就会长角,初发时嫩如春笋,其表面上有一层纤细茸毛的嫩角就是 ...

  6. Alpha七天冲刺

    一. 原计划冲刺甘特图 二. 七天冲刺博客 1. https://www.cnblogs.com/liujiamei/p/11870107.html 2. https://www.cnblogs.co ...

  7. js闭包和原型链好文

    http://www.cnblogs.com/wangfupeng1988/p/3977924.html

  8. c# 第二节 c#的常用IDE环境

    本节内容: 1:常用ide环境 2:Visual Studio 简介 3:Visual Studio Express简介 4:Sharp Develop 5:  IDE 与 .Net的版本 1:常用i ...

  9. centos7 下安装rpm的mysql 5.7

    在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...

  10. Spring Boot Quartz 动态配置,持久化

    Quartz 是一个很强大的任务调度框架在SpringBoot中也很容易集成 添加依赖: <dependency> <groupId>org.springframework&l ...