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一 ...
随机推荐
- C# 常用类库(字符串处理,汉字首字母拼音,注入攻击,缓存操作,Cookies操作,AES加密等)
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 记录下字符串类库,方便今后查阅 主要包含了字符串解决,去除HTML,SQL注入攻击检测,IP地址处理,Cookies操作,根据身份证获取性别.姓名. ...
- Git Error:There is no tracking information for the current branch.
在执行git pull的时候,提示当前branch没有跟踪信息: $> git pull There is no tracking information for the current bra ...
- ANDROID培训准备资料之四大组件的简单介绍
Android四大组件是一个android app 最基本的组成部分,这篇博客主要给大家简单的介绍一下四种组件 (1)Activities (2)Services (3)BroadcastReceiv ...
- 2.InfluxDB-InfluxQL基础语法教程--目录
本文翻译自官网,官方文档地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) InfluxQL ...
- Python 定时调度
APScheduler APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务 ...
- Linux 读写锁
线程的读写锁函数: 1,读写锁的初始化与销毁,静态初始化的话,可以直接使用PTHREAD_RWLOCK_INITIALIZER. #include <pthread.h> int pthr ...
- Springboot的entity,dao,controller,service层级理解
1.Dao层:持久层,主要与数据库交互 DAO层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类:接着就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一 ...
- Codeforces Round #590 (Div. 3) F
传送门 题意: 给出一个只含前\(20\)个字符的字符串,现在可以选择一段区间进行翻转,问区间中字符各不相同时,最长长度为多少. 思路: 首先,容易将题意转换为选择两个字符各不相同的区间,然后长度相加 ...
- 201871010134-周英杰《面向对象程序设计(java)》第十周学习总结
import java.io.FileInputStream; import java.io.FileNotFoundException; public class ExceptionText1 { ...
- 原生js拖拽、jQuery拖拽、vue自定义指令拖拽
原生js拖拽: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...