objectForDemo{ defmain(args: Array[String]): Unit = { //for基本结构,使用to实现左右两边闭合的访问区间[1,10] for (i <- 1 to 10) { println(s"i = $i") }
//for基本结构,使用until实现左闭右开的访问区间[1,10) for (i <- 1 until (10)) { println(s"i = $i") }
//双重循环,相当于Java中的嵌套循环,条件之间用分号分隔 println("=============双重循环=================") for (i <- 1 to 3; j <- 1 to 5) { println(i * j) }
println("=============循环中使用变量=================") for (i <- 1 to 3; j = 4 - i) { println(i * j) }
println("=============守卫式,增加了if条件语句=================") //注意:if前面没有分号 for (i <- 1 to 10; j <- 1 to 10if i == j) { println(s"i * j = $i * $j =${i * j}") }
println("=============推导式,使用yield接收返回结果=================") //如果for循环的循环体以yield开始,那么此循环会构造出一个集合,每次迭代生成集合中的一个值。 //可以使用变量接收产生的新集合 val result = for (i <- 1 to 5) yield i % 2 result.foreach(println(_))
println("=============九九乘法表=================") for (i <- 1 to 9; j <- 1 to i) { print(s"$j * $i = ${i * j}\t") if (i == j) println() }
println("=============for循环中使用大括号=================") for { i <- 1 to 3 from = 4 - i j <- from to 3 } println(s"i=$i,j=$j")
println("=============遍历字符串=================") val message="sparkscala" for(elem <- message) print(elem+" ") } }
objectWhileDemo{ defmain(args: Array[String]): Unit = { var num = 1 // while (num < 10) { // println(s"num = $num") // num += 1 // } // do { // println(s"num = $num") // num += 1 // } while (num < 10)
//使用Boolean类型的控制变量,终止循环 // var flag = true // while (flag) { // println(s"num = $num") // num += 1 // if(num==5) flag=false // }
//使用return关键字终止循环 // for (i <- 1 to 10) { // if (i == 5) return // println(s"i=$i") // }
//使用breakable和break终止循环,需要导入scala.util.control.Breaks包 import scala.util.control.Breaks._ var res = 0 breakable { for (i <- 1 until (10)) { if (i == 5) break() res += i } } println(res) } }