实验目的
1.掌握Scala语言的基本语法、数据结构和控制结构;
2.掌握面向对象编程的基础知识,能够编写自定义类和特质;
3.掌握函数式编程的基础知识,能够熟练定义匿名函数。熟悉Scala的容器类库的基本层次结构,熟练使用常用的容器类进行数据;
4.熟练掌握Scala的REPL运行模式和编译运行方法。
实验内容
1. 计算水仙花数
实验目标;
(1) 掌握scala的数组,列表,映射的定义与使用
(2) 掌握scala的基本编程
实验说明
水仙花数是指其个位、十位、百位三个数的立方和等于这个数本身,用Scala编程求出所有水仙花数。
for(a<-100 until 1000){ val b = a/100%10 val s = a/10%10 val g =a%10 var sum=b*b*b + s*s*s + g*g*g if(sum==a){ println("当前的水仙花数是:"+a) } }
2. 使用scala编写函数过滤文本中的回文单词
实验目标;
(1) 掌握scala的数组,列表,映射的定义与使用
(2) 掌握scala的for循环与if判断的使用
(3) 掌握scala的函数式编程
实验说明:
回文是指正向和逆向读起来相同的词,英语中也存在着回文现象,如“mom”和“dad”。
参照给出的英文文档word.txt,使用scala编程读取文件,并且编写一个函数判断文档中的每个单词是否为回文单词,若是则输出该单词。
实现思路及步骤:
(1)读取word.txt数据,将数据
(2)使用flatMap()方法获取缓存区里面的数据,并使用空格进行分割。
(3)定义函数isPalindrom(word:String)
(4) 在函数中判断单词正向与逆向是否一样,若是则输出该单词
(5)调用isPalindrom 函数
import scala.io.Source object PalindromeChecker { def main(args: Array[String]): Unit = { // 假设txt文件路径为"path/to/your/file.txt" val filePath = "/export/servers/word.txt" // 从文件中读取所有行,并使用flatMap和空格分割成单词 val words = Source.fromFile(filePath).getLines().flatMap(_.split("\\W+")).toList // 定义检查回文的函数 def isPalindrome(word: String): Boolean = word == word.reverse // 检查每个单词是否是回文,并打印回文单词 words.foreach { word => if (isPalindrome(word)) { println(s"$word is a palindrome!") } } } }
首先导入scala.io.Source,以便从文件中读取内容,紧接着定义main方法作为程序的入口点然后设定一个文件路径filePath,指向要检查的文本文件。使Source.fromFile(filePath).getLines()从文件中读取所有行,并通过flatMap和正则表达式"\\W+"(匹配一个或多个非单词字符)将每行分割成单词列表。然后,将结果转换为列表words,接着定义了一个辅助函数isPalindrome,它接受一个字符串word作为参数,并检查该字符串是否等于其反转字符串。如果是,则返回true,表示该单词是回文;否则返回false。使用foreach方法遍历words列表中的每个单词。对于每个单词,如果它是回文(即isPalindrome(word)返回true),则打印出该单词以及一个消息,表明它是一个回文。
3. 使用scala编程输出九九乘法表:
实验目标:
(1) 掌握scala循环的使用
(2) 掌握scala函数式编程
实验说明:
九九乘法表是我国古代人民的智慧结晶,在春秋战国时代就已经在筹算中运算,到明代则改良病用在算盘上。现需要使用scala编程输出九九乘法表,要求输出效果如图所示:
3. 使用scala编程输出九九乘法表:
实验目标:
(1) 掌握scala循环的使用
(2) 掌握scala函数式编程
object MultiplicationTable { def main(args: Array[String]): Unit = { for (i <- 1 to 9) { for (j <- 1 to i) { print(s"${j}x${i}=${i*j}\t") } println() } } }
在main
方法中,我们使用了两个嵌套的for
循环。外层循环变量i
从1遍历到9,内层循环变量j
从1遍历到i
。在每次内层循环中,都打印出一个乘法表达式(例如"1x1=1")和一个制表符(\t
),用于在输出中对齐各个表达式。当内层循环完成后,然后打印一个换行符(\n
),以便开始新的一行。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/scalabc/1844.html