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一 ...
随机推荐
- Java执行shell脚本并返回结果两种方法的完整代码
Java执行shell脚本并返回结果两种方法的完整代码 简单的是直接传入String字符串,这种不能执行echo 或者需要调用其他进程的命令(比如调用postfix发送邮件命令就不起作用) 执行复杂的 ...
- vue.js 父组件主动获取子组件的数据和方法、子组件主动获取父组件的数据和方法
父组件主动获取子组件的数据和方法 1.调用子组件的时候 定义一个ref <headerchild ref="headerChild"></headerchild& ...
- OC-加载h5富文本的代码,并计算高度
参考文章: 加载富文本的h5代码:https://zhidao.baidu.com/question/1510839173546014340.html 计算富文本的高度:https://zhidao. ...
- 团队作业第3周——需求改进&系统设计(crtl冲锋队)
2.需求&原型改进: 1.问题:游戏中我方飞机和敌方飞机是怎么控制的? 改进: 在游戏中,我控制我方飞机,按下方向键飞机便向按下的方向移动,按下Z键,我方飞机发射子弹. 敌方飞机面向随机的方向 ...
- 6、Routing
Routing In the previous tutorial we built a simple logging system. We were able to broadcast log mes ...
- Springboot jackSon -序列化-详解
在项目中有事需要对值为NULL的对象中Field不做序列化输入配置方式如下: [配置类型]: 源码包中的枚举类: public static enum Include { ALWAYS, NON_NU ...
- 文件处理file handling
#1. 打开文件,得到文件句柄并赋值给一个变量 #2. 通过句柄对文件进行操作 #3. 关闭文件 #1.open函数打开文件,open找的是系统的编码gbkf = open("陈粒" ...
- 3.Vue的基本语法
1.v-bind 可简写为":" 你看到的 v-bind 等被称为指令.指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性. 我们可以使用 v-bind 来绑定元素特性! 在 ...
- requests--超时设置,代理设置,身份认证
超时设置 你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应.基本上所有的接口都应该使用这一参数.如果不使用,你的程序可能会永远失去响应 import requ ...
- [LeetCode] 333. Largest BST Subtree 最大的二分搜索子树
Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest mea ...