1. 程式人生 > >【圖文詳細 】Scala——程式設計練習

【圖文詳細 】Scala——程式設計練習

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) 
  } 
}