Scala编程初级实践

网友投稿 1107 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

输入代码

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小时内删除侵权内容。

上一篇:配置Tomcat的访问日志和线程数
下一篇:MySQL系列之事务日志Undo log学习笔记
相关文章