catalogue
- 题目1:温度转换器
- 题目2:奇偶判断与绝对值
- 题目3:区间内的偶数求和
- 题目4:数值类型转换与计算
- 题目5(期末):计算三角形面积
- 题目6(期末):高阶函数
- 题目7(期末):继承
- 题目8(期末):统计单词个数
- 题目9(期末):构造器
🩷scala项目要这样新建哦,然后选scala,不然没法用scala编译
🩷
难度:入门
内容:scala语言基础语法
题目1:温度转换器
importscala.io.StdInobjectblog{defmain(args:Array[String]):Unit={println("请输入华氏温度(浮点数):");varhua=scala.io.StdIn.readDouble();varshe=(hua-32)/1.8;println(f"对应的摄氏温度为:$she%.2f")}}题目2:奇偶判断与绝对值
importscala.io.StdInimportscala.mathobjectblog{defmain(args:Array[String]):Unit={println("请输入一个整数:")valnum=StdIn.readInt()// 使用导入的简单名valresult=analyzeNumber(num)// 字符串插值访问元组元素要加花括号println(f"数字$num是${result._1},它的绝对值是${result._2}")}defanalyzeNumber(num:Int):(String,Int)={// 返回类型要写元组具体结构valjiou=if(num%2==0)"偶数"else"奇数"// 使用val表示不可修改,用简洁的if表达式valabvalue=math.abs(num)// 使用导入的简单名(jiou,abvalue)// 直接返回元组,不需要return关键字}}题目3:区间内的偶数求和
importscala.io.StdInimportscala.mathobjectblog{defmain(args:Array[String]):Unit={println("请输入两个整数:")vara=StdIn.readInt()varb=StdIn.readInt()vartotal=0valstart=math.min(a,b)//统一范围(取最小值为起点,最大值为终点)valend=math.max(a,b)println(f"a为$a,b为$b")for(i<-start toend){if(i%2==0){total=total+i}}println(f"$start到$end间的偶数和为$total")}}🩷
难度:入门
内容:scala语言基本数据类型
题目4:数值类型转换与计算
importscala.io.StdInobjectblog{defmain(args:Array[String]):Unit={println("请按顺序输入整数、整数、浮点数:")varintNum=StdIn.readInt()varlongNum=StdIn.readInt()varfloatNum=StdIn.readFloat()varresult=calculateAverage(intNum,longNum,floatNum)println(f"这三个数的平均数为${result}%.2f")}defcalculateAverage(intNum:Int,longNum:Long,floatNum:Float):Double={valsum=intNum.toDouble+longNum.toDouble+floatNum.toDouble//将所有参数显式转换为Double,避免精度丢失valaverage=sum/3.0average}}题目5(期末):计算三角形面积
编写一个 Scala 程序,定义一个计算三角形面积的函数,函数接收底和高两个参数(默认值均为 1.0),并在 main 方法中测试该函数(分别测试传入两个参数、一个参数、无参数的情况)。提交代码和运行结果截图。
objectblog{defsOfsanjiaoxing(a:Double=1.0,b:Double=1.0):Double={vals=a*b/2s}defmain(args:Array[String])={println("两个参数:")println(sOfsanjiaoxing(2.0,3.0))println("一个参数:")println(sOfsanjiaoxing(2.0))println("没有参数:")println(sOfsanjiaoxing())}}题目6(期末):高阶函数
编写一个高阶函数,接收一个整数列表和一个函数(Int => Boolean),返回列表中满足函数条件的所有元素组成的新列表。使用该高阶函数过滤出列表中大于 10 且小于 20 的元素(列表:List (7, 8, 10, 17, 25, 19, 15))。
提交代码和运行结果截图。
deffilterList(numbers:List[Int],condition:Int=>Boolean):List[Int]={numbers.filter(condition)}objectblog{defmain(args:Array[String]):Unit={valnumbers=List(7,8,10,17,25,19,15)valresult=filterList(numbers,x=>x>10&&x<20)println(s"过滤结果:$result")}}题目7(期末):继承
定义一个表示银行的Account类,包含以下功能:
(1)属性:账号(accountNo)、余额(balance)。
(2)方法:存款(deposit)、取款(withdraw)。
(3)然后创建一个CheckingAccount子类,每次交易收取1元手续费。
提交代码和运行结果截图
objectblog{classAccount(valaccountNo:String,varbalance:Double){defdeposit(amount:Double):Unit={balance+=amount}defwithdraw(amount:Double):Boolean={if(amount<=balance){balance-=amounttrue}else{false}}}classCheckingAccount(accountNo:String,balance:Double)extendsAccount(accountNo,balance){overridedefdeposit(amount:Double):Unit={super.deposit(amount-1)}overridedefwithdraw(amount:Double):Boolean={if(amount+1<=balance){super.withdraw(amount+1)true}else{false}}}defmain(args:Array[String]):Unit={valaccount=newCheckingAccount("1234",100.0)account.deposit(50.0)println(s"存款后余额:${account.balance}")account.withdraw(30.0)println(s"取款后余额:${account.balance}")}}题目8(期末):统计单词个数
统计字符串“hello,scala,hello,word”中每个单词的个数。
objectblog{defmain(args:Array[String]):Unit={valtext="hello,scala,hello,word"text.split(",").groupBy(identity).view.mapValues(_.length).toMap.foreach(println)}}题目9(期末):构造器
定义一个学生注册信息类,要求有姓名、电话、专业和身份证。其中你可以选择用姓名和电话或姓名身份证注册。电话、姓名和身份证为不可修改属性,专业为非必要属性且可修改(提示:提供2个构造器),如果姓名和电话或姓名和身份证相等,可认为是同一个学生,打印输出(“信息已经注册或请核对信息”)。
classStudent(valname:String,valphone:String,validCard:String,varmajor:String="未填写"){// 辅助构造器1:姓名 + 电话defthis(name:String,phone:String)=this(name,phone,"")// 辅助构造器2:姓名 + 身份证defthis(name:String,idCard:String,isId:Boolean)=this(name,"",idCard)// 判断是否为同一学生defisSame(other:Student):Boolean={name==other.name&&(phone.nonEmpty&&phone==other.phone||idCard.nonEmpty&&idCard==other.idCard)}}objectStudent{defmain(args:Array[String]):Unit={vals1=newStudent("张三","13800000000")vals2=newStudent("张三","13800000000")vals3=newStudent("张三","440101199901011234",true)if(s1.isSame(s2))println("信息已经注册或请核对信息")s1.major="软件工程"}}