Scala•exercises

📅 2026/7/24 21:01:51
Scala•exercises
catalogue题目1温度转换器题目2奇偶判断与绝对值题目3区间内的偶数求和题目4数值类型转换与计算题目5(期末)计算三角形面积题目6(期末)高阶函数题目7(期末)继承题目8(期末)统计单词个数题目9(期末)构造器scala项目要这样新建哦然后选scala不然没法用scala编译难度入门内容scala语言基础语法题目1温度转换器importscala.io.StdInobjectblog{defmain(args:Array[String]):Unit{println(请输入华氏温度浮点数);varhuascala.io.StdIn.readDouble();varshe(hua-32)/1.8;println(f对应的摄氏温度为$she%.2f)}}题目2奇偶判断与绝对值importscala.io.StdInimportscala.mathobjectblog{defmain(args:Array[String]):Unit{println(请输入一个整数)valnumStdIn.readInt()// 使用导入的简单名valresultanalyzeNumber(num)// 字符串插值访问元组元素要加花括号println(f数字$num是${result._1}它的绝对值是${result._2})}defanalyzeNumber(num:Int):(String,Int){// 返回类型要写元组具体结构valjiouif(num%20)偶数else奇数// 使用val表示不可修改用简洁的if表达式valabvaluemath.abs(num)// 使用导入的简单名(jiou,abvalue)// 直接返回元组不需要return关键字}}题目3区间内的偶数求和importscala.io.StdInimportscala.mathobjectblog{defmain(args:Array[String]):Unit{println(请输入两个整数)varaStdIn.readInt()varbStdIn.readInt()vartotal0valstartmath.min(a,b)//统一范围取最小值为起点最大值为终点valendmath.max(a,b)println(fa为$ab为$b)for(i-start toend){if(i%20){totaltotali}}println(f$start到$end间的偶数和为$total)}}难度入门内容scala语言基本数据类型题目4数值类型转换与计算importscala.io.StdInobjectblog{defmain(args:Array[String]):Unit{println(请按顺序输入整数、整数、浮点数)varintNumStdIn.readInt()varlongNumStdIn.readInt()varfloatNumStdIn.readFloat()varresultcalculateAverage(intNum,longNum,floatNum)println(f这三个数的平均数为${result}%.2f)}defcalculateAverage(intNum:Int,longNum:Long,floatNum:Float):Double{valsumintNum.toDoublelongNum.toDoublefloatNum.toDouble//将所有参数显式转换为Double避免精度丢失valaveragesum/3.0average}}题目5(期末)计算三角形面积编写一个 Scala 程序定义一个计算三角形面积的函数函数接收底和高两个参数默认值均为 1.0并在 main 方法中测试该函数分别测试传入两个参数、一个参数、无参数的情况。提交代码和运行结果截图。objectblog{defsOfsanjiaoxing(a:Double1.0,b:Double1.0):Double{valsa*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:IntBoolean):List[Int]{numbers.filter(condition)}objectblog{defmain(args:Array[String]):Unit{valnumbersList(7,8,10,17,25,19,15)valresultfilterList(numbers,xx10x20)println(s过滤结果$result)}}题目7(期末)继承定义一个表示银行的Account类包含以下功能1属性账号accountNo、余额balance。2方法存款deposit、取款withdraw。3然后创建一个CheckingAccount子类每次交易收取1元手续费。提交代码和运行结果截图objectblog{classAccount(valaccountNo:String,varbalance:Double){defdeposit(amount:Double):Unit{balanceamount}defwithdraw(amount:Double):Boolean{if(amountbalance){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(amount1balance){super.withdraw(amount1)true}else{false}}}defmain(args:Array[String]):Unit{valaccountnewCheckingAccount(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{valtexthello,scala,hello,wordtext.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{nameother.name(phone.nonEmptyphoneother.phone||idCard.nonEmptyidCardother.idCard)}}objectStudent{defmain(args:Array[String]):Unit{vals1newStudent(张三,13800000000)vals2newStudent(张三,13800000000)vals3newStudent(张三,440101199901011234,true)if(s1.isSame(s2))println(信息已经注册或请核对信息)s1.major软件工程}}