实验1-scala编程

实验目的

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),以便开始新的一行。

  • 50
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验7,我们学习到了如何使用Spark来进行编程实践,其使用的是Scala语言。Spark是一个开源的分布式计算框架,它可以高效地处理大规模的数据集。 在实验,我们首先学习了Spark的基本概念和架构。Spark使用了RDD(弹性分布式数据集)作为其核心数据结构,可以将数据集分布在集群的多个节点上,并通过并行计算来进行高效处理。我们还了解了Spark的运行模式,包括本地模式和集群模式,并学习了如何设置和配置Spark的运行环境。 接着,我们学习了使用Scala语言编写Spark应用程序的方法。Scala是一种功能强大的静态类型编程语言,它可以与Java无缝集成,并且提供了很多简化编程的特性。我们学习了如何使用Scala函数编程特性来编写Spark应用程序,并通过实例演示了如何加载数据、转换数据以及进行数据分析和计算。 在实验,我们还学习了Spark的常见操作和转换,包括map、reduce、filter、join等。这些操作可以帮助我们对数据进行各种复杂的计算和处理,而无需编写繁琐的循环和条件判断。我们还学习了如何使用Spark的持久化机制来优化计算性能,包括将数据缓存到内存和将数据持久化到磁盘上。 最后,我们在实验使用了Spark进行了几个实际的编程练习。通过这些练习,我们学习了如何在Spark加载和处理不同类型的数据,包括文本数据、CSV文件和JSON数据。我们还学习了如何使用Spark进行数据清洗、数据转换和数据分析,并学习了如何使用Spark的机器学习库来进行简单的机器学习任务。 总的来说,实验7是一个非常实用和综合的实验,通过学习和实践,我们对Spark编程有了更深入的了解和掌握。同时,我们也学习到了如何使用Scala语言编写高效的分布式计算程序。这些知识和技能对于我们在实际工作处理大数据和进行分布式计算非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值