Spark编程基础及项目实践章节练习题项目2+答案.docx
-
资源ID:76379421
资源大小:767.31KB
全文页数:12页
- 资源格式: DOCX
下载积分:10金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
Spark编程基础及项目实践章节练习题项目2+答案.docx
Spark编程基础及项目实践章节练习题项目2+答案第二章 习题答案实训代码完整程序如下:文件studentinfo.txt的内容如图1所示,注意在Windows平台下将studentinfo.txt保存为UTF-8的格式。图1 学生信息在Linux的/usr/local/project目录下创建文件studentinfo.txt,使用命令“touch studentinfo.txt”。执行命令“vim studentinfo.txt”对文件进行编辑,按“i”进入编辑模式,输入图2-40所示内容,按“Esc”退出编辑状态,再执行命令“:wq”进行保存并退出。在/usr/local/project目录下创建文件StudentInfo.scala,输入内容如下:import scala.io._import util.control.Breaks._object StudentInfo var arrInfo:ArrayString = null def main(args: ArrayString) /将/usr/local/project/studentinfo.txt的文件内容读入到数组中/一行为一个元素val lines = for(line <- Source.fromFile("/usr/local/project/studentinfo.txt").getLines) yield line arrInfo = lines.toArray var flag = true show() while(flag) print("请输入选择序号:") val choice = StdIn.readLine() breakable if(!isIntByRegex(choice) /如果输入不是数字,则跳出本次循环 println("请输入正确的序号") break choice.toInt match case 1 => var maleCnt = count("男") println("三个班级共有男生" + maleCnt +"人") case 2 => var femalCnt = count("女") println("三个班级共有女生" + femalCnt +"人") case 3 => print("输入学号:") val studentId = StdIn.readLine() var mark = false breakable for(i <- 0 until arrInfo.length) var info = arrInfo(i) val arr : ArrayString = info.split("t") if(arr(1)= studentId) mark = true println("班级t学号t姓名t性别t年龄t籍贯t电话") println(info) break /找到了学号,就跳出breakable,终止循环 if(!mark) println("查无此人") case 4 => /按班级进行分组 print("输入班级序号:") val classId = StdIn.readLine() println("班级t学号t姓名t性别t年龄t籍贯t电话") /* * 将arrInfo数组使用groupBy函数按照班级序号进行分组 * 先将数组中的每个元素按照"t"进行分割 * 提取出分割后的第一个元素(即班级序号) * 按照班级序号进行分组,返回一个MapString,ArrayString类型 * 将返回值赋值给mapArr */ val mapArr = arrInfo.groupBy(x => x.split("t")(0) for(maparr <- mapArr(classId) println(maparr) case 5 => flag = false println("再见!") case _ => println("输入错误,请重新输入") /使用正则表达式判断字符串s是否为数字 def isIntByRegex(s : String) = val pattern = """(d+)$""".r s match case pattern(_*) => true case _ => false /展示功能页面 def show() = println("*") println("1. 统计男生人数") println("2. 统计女生人数") println("3. 输入学号,打印出学生信息") println("4. 输入班级序号,打印出班级学生信息列表") println("5. 退出") println("*") /根据指定的信息统计人数 def count(param: String): Int = var sum = 0 for(info <- arrInfo; if info.contains(param) sum += 1 sum 运行结果如图2-50所示。图2-50 学生信息查询程序运行结果课后习题答案1. 填空题(1)Scala运行在_Java虚拟机(JVM)之上,源代码通过scalac编译器编译成Java字节码,Scala兼容现有的Java程序。(2)Scala是_纯面向对象的_,每个值都是一个对象,包括基本数据类型和函数,每个操作都是方法的调用。Scala是一门_函数式编程_语言,每个函数都是一个值。(3)REPL是一个交互式解释器,是Scala提供的一个重要的交互模式的工具,可以即时编译、运行代码并返回结果。安装好Scala后,在命令行下运行_“scala”_就可以启动它。(4)Scala中没有基本类型的概念,Scala中没有原生的数据类型,所有的数据类型都是_对象_。(5)Scala使用两个关键字来声明变量:_val_和_var_2. 选择题(1)下列( C )不属于Scala数据类型。A. Int B.Double C.int D.Unit(2)下面的Scala语句能正确执行的是( B )。A. val a = 2; a = 3 B. var a = 2; a = 3 C. var a = 2; a = “3” D. val a = 2; a = “3”(3)以下说法正确的是( A)A. 数组中的元素都属于同一个数据类型B. 默认情况下,Scala使用的是可变映射C. List中不可以存放重复对象D.Set中可以有重复对象且Set中元素是有序的(4)关于函数: 得到的结果不一致的是( D )。A. sum(1,2,3) B. sum(6)C. sum(2,4) D. sum(1,1,1,2)(5)下列关于元组 Tuple的 说法错误的是( D )。A. 元组可以包含不同类型的元素B. 元组是不可变的C. 访问元组pair的第一个元素的方式为 pair._1D. 元组最多只有两个元素(6)下列List的定义中不正确的是( C )。A. val number:ListInt = 1:2:3:NilB. val name:ListString = "Tom":("Jack":("Lucy":Nil)C.val list:String = List(“a”, “b”, “c”)D. val number:ListInt = List(1, 2, 3, 4, 5)(7)下列函数的定义中不正确的是( B )A. def add(x:Int, y:Int):Int = x + yB.def minus(x:Int, y:Int) => return x yC. def addFun(x:Int)(y:Int) = x * yD. val add = (a:Double, b:Double) => a + b(8)表达式“for(i <-1 to 3; j <- 1 to 3; if i != j)print(i + j) +" ")的”输出结果是( A )。A. 3 4 3 5 4 5 B. 1 2 3 4 5 6 C. 2 4 6 D.1 2 4 6(9)有如下函数定义。 则fac(5)的输出结果是( B )。A. 14 B. 15 C. 0 D. 5(10)类和单例对象间的差别是( B )。A. 单例对象不可以定义方法,而类可以B. 单例对象不可以带参数,而类可以C. 单例对象不可以定义私有属性,而类可以D. 单例对象不可以继承,而类可以3.编程题(1)编写函数来测试单词是否是回文,若是,则打印出该单词。回文是只正向和逆向读起来相同的词,如“eye”和“level”。def palind_str(word:String):Unit = if(word = word.reverse) println(word) /测试函数palind_str("eye")(2)打印出九九乘法表。for(i <- 1 to 9; j <- 1 to 9)print(i + "*" + j + "=" + i * j + " ")if(i = j) println()