Scala•exercises
2026/7/24 21:01:50 网站建设 项目流程

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="软件工程"}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询