使用方法去完成

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. 小鸟初学Shell编程(九)环境变量变量配置文件

    介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 ...

  2. 6 、 图论—NP 搜索

    6.1 最大团 //最大团 //返回最大团大小和一个方案,传入图的大小 n 和邻接阵 mat //mat[i][j]为布尔量 #define MAXN 60 void clique(int n, in ...

  3. 英语_金丝楠是紫楠(phoebeSheareri)的别名

    姚黄魏紫俱凋零--红木家具今古谈(连载七) [上海木业网]楠木品种包括闽楠.细叶楠.红毛山楠.滇楠.白楠.紫楠.乌心楠.桢楠.水楠.香楠等二百余种之多,1997年的木材国家标准中就列入了八种.某些售卖 ...

  4. 转 Fortofy扫描漏洞解决方案2

    Fortify漏洞之Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally   继续对Fortify ...

  5. Kali无法使用Chrome原因及解决方法

      Kali安装好后,默认的浏览器是Firefox-ESR(Extended Support Release 长期支持)版本.   作为Chrome的死忠粉,当然是要下Chrome用用的.   直到我 ...

  6. 源码详解Pytorch的state_dict和load_state_dict

    在 Pytorch 中一种模型保存和加载的方式如下: # save torch.save(model.state_dict(), PATH) # load model = MyModel(*args, ...

  7. 201871010126 王亚涛 《面向对象程序设计(Java)》第十一周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  8. 201871010123-吴丽丽《面向对象程序设计(java)》第二周学习总结

    201871010123-吴丽丽<面向对象程序设计(java)>第二周学习总结                         项目                这个作业属于哪个课程 h ...

  9. 莫烦TensorFlow_03 Variable加法

    import tensorflow as tf ## 定义变量 state = tf.Variable(0, name = 'counter') #print(state.name) one = tf ...

  10. JAVA并发-ReentrantReadWriteLock

    简介 读写锁维护着一对锁,一个读锁和一个写锁.通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提升:在同一时间可以允许多个读线程同时访问,但是在写线程访问时,所有读线程和写线程都会被阻塞. 读写 ...