目录
实训目的
实训1:编写函数过滤文本中的回文单词
1. 训练要点
2.需求说明
3.思路及步骤
实训2:使用Scala编程输出杨辉三角
1. 训练要点
2.需求说明
3.思路及步骤
实训3:用Scala编程求出100~999之间的所有水仙花数。
实训目的
( 1)掌握Scala的REPL使用。
(2)掌握Scala的Array、List、Map等创建与使用。
(3)掌握Scala循环与判断的使用。
( 4)掌握Scala函数式编程。
实训1:编写函数过滤文本中的回文单词
1. 训练要点
- 函数的定义。
- 方法的调用。
2.需求说明
回文是指正向和逆向读起来相同的词。例如“mom”和“dad”。编写一个函数用来测试单词是否是回文,若是则打印出该单词。提示: String的revere方法在此处会很有用。
3.思路及步骤
( 1 )定义函数isPalindrom(word:String)。
(2)在丽数中判断单词正向与逆向是否样,若是则打印。
( 3 )测试函数。
实现源代码:
scala> def isPalindrom(word:String):Unit={
val word2=word.reverse
if(word==word2){
println(word+" is palindrom!")
}
}
scala> isPalindrom("aba")
运行结果截图:
实训2:使用Scala编程输出杨辉三角
1. 训练要点
(1) Scala函数的运用。
(2) Scala 循环的使用。
2.需求说明
杨辉三角(帕斯卡三角形)是二项式系数在三角形中的一种集合排列, 在我国南宋数学家杨辉于1261年所著的(详解九章算法》一书里就已经记载了。
一些基本的关系,如下所示:
(1)每个数字都是它上方两数之和。
(2)两侧最外围是由数字1组成。
(3)其余数则是其肩上两个数的和。
结合实际,运用Scala编程实现指定层杨辉三角的输出。
3.思路及步骤
(1)定义一一个取值函数pascal, 得到指定行列的值。杨辉三角的性质决定了除左右两边等于1外,元素的值等于其肩上两数的和,即Value(row,column) = Value(rows,column-1)+Value(rows-1,column-1)。当行和列的值越来越小时达到终止条件。
(2)以行为分界,打印每个元素的值。
源代码:
[root@node1 scala]# vi test1.scala
object test {
def main(args: Array[String]) {
val a =Array.ofDim[Int](10,10)
for(i<- 0 until a.length){
a(i)(0)=1
a(i)(i)=1
}
for(i <-2 until a.length ){
for(j <-1 until a(i).length){
a(i)(j)=a(i-1)(j-1)+a(i-1)(j)
}
}
for(i <-0 until a.length){
for(j <- 0 until a(i).length if j<=i){
print(a(i)(j)+"\t")
}
println()
}
}
}
[root@node1 scala]# scala test1.scala
运行结果截图:
实训3:用Scala编程求出100~999之间的所有水仙花数。
题目:水仙花数是指其个位、十位、百位3个数的立方和等于这个数本身,请用Scala编程求出100~999之间的所有水仙花数。
(1)、源代码
scala>def narcissus():Unit={
for(number<-100 to 999){
val a=number/100
val b=number%100/10
val c=number%100%10
if(a*a*a+b*b*b+c*c*c==number){
print(number+" ")
}
}
}
scala>narcissus()
(2)、运行结果截图: