【圖文詳細 】Scala——程式設計練習
阿新 • • 發佈:2018-12-24
6、Scala 程式設計練習
6.1、99 乘法表
package com.mazh.scala.funny
object Table99 {
def main(args: Array[String]): Unit = {
for (i <- 1 to 9){
for (j <- 1 to i){
printf("%d*%d=%2d\t", i, j, (i*j))
}
println()
}
}
}
其實也可以利用 scala 的語法特性,使用一句程式碼完成:
for(a <- 1 to 9; b <- 1 to a) printf("%d*%d=%d%s", a, b, a*b, if(a==b) "\n" else "\t")
或者:
for(x<- 1 to 9;y<- 1 to x )print(s"$y*$x=${x*y}${if(x==y) "\n" else "\t"}")
6.2、Scala 版本的 WordCount
現在有一個數組變數讀入了一段話形成了一個數組,求出這段話中的每個單詞的出現次數, 簡單來說,就是單詞統計:
val array = Array("hello huangbo", "hello xuzheng", "hello wangbaoqiang")
結果:
array.flatMap(_.split(" ")).map( (_,1)).groupBy(t => t._1).map(t =>(t._1,t._2.length)) .toList.sortBy(t => t._2).reverse
6.3、Scala 版本的插入排序 InsertSort
package com.mazh.scala.sort import scala.util.control.Breaks object InsertSort { def main(args: Array[String]): Unit = { val array = Array(4,12,6,3,8,9,5) val ab = array.toBuffer // 建立 Breaks物件 val forLoop = new Breaks for (i <- 1 until ab.length){ val value_i = ab(i) // 把需要可能 break的程式碼放在 breakable 中執行 forLoop.breakable{ for (j <- 0 to i - 1){ val value_j = ab(j) if (value_j > value_i){ ab.remove(i, 1) ab.insert(j, value_i) // 使用 break進行跳出 forLoop.break() } } } } println(ab) } }