【图文详细 】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"}") 

【图文详细 】Scala——编程练习_第1张图片

 

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

 

你可能感兴趣的:(Scala)