OKR实践中的痛点(1):老板的KR我的O,怎么办?(okr上级的kr是自己的o吗)
1126
2022-05-29
名称
Scala编程初级实践
目的
1.掌握Scala语言的基本语法、数据结构和控制结构;
2.掌握面向对象编程的基础知识,能够编写自定义类和特质;
3.掌握函数式编程的基础知识,能够熟练定义匿名函数。熟悉Scala的容器类库的基本层次结构,熟练使用常用的容器类进行数据;
4.熟练掌握Scala的REPL运行模式和编译运行方法。
内容与结果分析
计算级数
请用脚本的方式编程计算并输出下列级数的前n项之和Sn,直到Sn刚好大于或等于q为止,其中q为大于0的整数,其值通过键盘输入。
例如,若q的值为50.0,则输出应为:Sn=50.416695。请将源文件保存为sn.scala,在REPL模式下测试运行,测试样例:q=1时,Sn=2;q=30时,Sn=30.891459;q=50时,Sn=50.416695。
要求:选取以下任意两种方式完成
①repl环境下一行一句运行
q=1时
q=30时
q=50时
②脚本文件test1.scala存放不带有对象和main的所有代码,在REPL中:load运行
先编写sn.scala
当q=1时
当q=30时
当q=50时
2 使用scala语言编程输出九九乘法表
创建99.scala
输入代码
import scala.collection.mutable.ArrayBuffer
object NineNineForm {
def main(args: Array[String]): Unit = {
println("************ 九九乘法表 **********")
for(i<- 1 until 10){
val array=new ArrayBufferString
for(j<- 1 until i+1){
var a:String =j+""+i+"="+ij+" "
array+=a
}
array.foreach(print)
println()
}
}
}
3 统计List列表中中单词出现的频率,例如:
创建lzlcipin.scala
输入代码
val list1=List(“I am a student”,” love database”,”Hadoop is good”,”spark is good”)
输出结果为:键值对形式输出
import collection.mutable.Map
val list1 = List(“I am lizhuolang” , “I love lizhuolang” , “Hadoop is good” , “Scala is good”)
var m = Map.empty[String , Int]
val list2 = list1 flatMap{a => a.split(" ")}
val f : String => Unit = {w =>
if (m.contains(w)) m(w) += 1
else m(w) = 1
}
list2.foreach(f)
m foreach {kv => println(kv._1,kv._2)}
4 统计学生成绩
创建grade1.txt
测试样例文件的路径
将每行按空白字符(包括空格/制表符)分开
由于后面涉及操作列表的函数,故用toList将Iterator改为List
originalData的类型为List[Array[String]]
originalData:List[Array[String]]类型
获取文件中第一行信息(表头)
获取第一行中的课程名
去除第一行剩下的数据
allStudents:List[Array[String]]类型
按性别划分为两个容器
男生人数和女生人数
for对每门课程生成一个三元组,分别表示平均分,最低分和最高分
for循环执行3次,1次对应一门课程,每次for循环会生成一个temp,该temp是一个List类型,用于存放某门课程的分数,语句val temp = allStudents map {elem=>elem(i).toDouble}表示对 allStudents进行映射操作,allStudents原来是List类型,故temp也是List类型。具体映射方法是:将allStudents的每一行映射成该行第i列的Double表示。下表是以第一次for循环为例,输出的temp结果表示:
for推导式,将for的结果放在result中,result是一个向量,向量中的元素个数等于课程门数,每一个元素是一个三元组tuple,对每门课程生成一个三元组,分别表示平均分,最低分和最高分
输出结果
输出男生的结果
输出女生的结果
出现的问题及解决方案
1.运行代码时出现编码错误
错误:
错误原因:
因为wps里的空格和linux里的空格编码方式不同,空格有如下分类
\u00A0:不间断空格,主要用在office中,让一个单词在结尾处不会换行显示
\u0020:半角空格(英文符号),代码中常用的
\u3000:全角空格(中文符号),中文文章中使用
解决办法:
我们无法看出空格的区别,但是编译器可以,所以只能手动更换代码里所有的空格
2.数组越界
错误:
数组越界
解决办法:
网上找的方法都没用,最后自己手动重输了一下grade1.txt才得以解决
Scala
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。