Scala----For循环---02

目录

 

循环步长

嵌套循环

 经典案例:九九乘法表

引入变量

经典案例:九层妖塔

循环返回值

倒序打印


 

循环步长

基本语法

for (i <- 1 to 10 by 2 ) {

          println(" i=" + i )

}

说明:by 表示步长

案例实操 

 package Chapter04

object Test_02ForLoop {
  def main(args: Array[String]): Unit = {

    //循环步长

    //1、计算1-10之间所有的奇数
    for (i <- 1 to 10 by 2){

      print("i=:"+i+" ")
    }
    println()

    //计算1-10之间所有的偶数
    for (i <- 10 to 1 by -2){
      print("i=:"+i+" ")
    }
    println()

    //计算1-10
    for (i <- 1 to 10 ){
      println("i="+i)
    }
    println("---------")

    //计算1-10倒过来输出
    for (i <- 1 to 10 reverse){
      print("i=:"+i+" ")
    }
     
          //步长不能为0
    // for (i <- 1 to 10 by 0){
    // print("i=:"+i+" ")
    //}
    println()

    //步长为Double类型,有时候会不正常或超出范围
    for (i <- 1.0 to 3.0 by 0.5){
      print("i=:"+i+" ")
    }



  }
}

运行结果

43ab37e2ce154ab88b82e5d127c48176.png

嵌套循环

基本语法

for ( i <- 1 to 3; j <- 1 to 3 ){

        println( " i = " + i + " j = " + j)

}

说明:没有关键字,所有范围后一定要加;来隔断逻辑。

上面的代码等价于

for ( i <- 1 to 3 ){

      for ( i <- 1 to 3 ){

        println( " i = " + i + " j = " + j)

         }

}

案例实操 

package Chapter04

object Test_02ForLoop {
  def main(args: Array[String]): Unit = {

    //5、循环嵌套

    //3*3数组
    for(i <-1 to 3 ) {
      for (j <- 1 to 3) {
        println("i=" + i + ",j=" + j)
      }
    }
    println("--------------")

    //4*5数组
    for(i <-1 to 4; j <-1 to 5){
      println("i=" + i + ",j=" + j)
    }

  }
}

运行结果

33a48a309dc247c6bdf281210dfba734.png

 经典案例:九九乘法表

package Chapter04

object Test03_Practice_MulTable {
  def main(args: Array[String]): Unit = {


    for (i <- 1 to 9 ){
      for (j <- 1 to i){
        print(s"$j * $i = ${i * j} \t")
      }
      println()
    }

    println("========================================")

    //简写
    for (i <- 1 to 9; j <- 1 to i ){
      print(s"$j * $i = ${i * j} \t")
      if (i==j) println()
    }

    

  }

}

运行结果

03c03f6066fb4bdb9e98ed74021c4de0.png

 九九乘法表倒序打印

package Chapter04

object Test03_Practice_MulTable {
  def main(args: Array[String]): Unit = {

  println("========================================")
    //简写

    for (i <- 1 to 9 reverse; j <- 1 to i ){
      print(s"$j * $i = ${i * j} \t")
      if (i==j) println()
    }



  }

}

运行结果

8207296177e544c1b5c4b5e0a2ab165e.png

引入变量

基本语法

for ( i <- 1 to 3; j = 4 - i ) {

       println (" i =" + i + " j = " + j )

}

说明:

(1)for推导式一行中有多个表达式时,所以要加 ;来隔断逻辑

(2)for推导式有一个不成文的约定:当for推导式仅包含单一表达式时使用圆括号,当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号,如下

for { i <- 1 to 3

        j = 4 - i

 }   {

       println (" i =" + i + " j = " + j )

}

上面的代码等价于

for ( i <- 1 to 3 ) {

     val  j = 4 - i

       println (" i =" + i + " j = " + j )

}

案例实操

package Chapter04

object Test_02ForLoop {
  def main(args: Array[String]): Unit = {
    //循环引入变量
    for (i <- 1 to 10; j = 10 -i){
      println("i="+i+",j="+j)
    }
    println("---------")
    for (i <- 1 to 10){
         val j = 10 -i
      println("i="+i+",j="+j)
    }
    println("---------")
    for {i <- 1 to 10
         j = 10 - i
         } {
      println("i="+i+",j="+j)
    }

  }
}

运行结果

2a5be2cbe76b42cb97866eca1e810797.png

经典案例:九层妖塔

package Chapter04

object Test_04Practice_Pyramid {
  def main(args: Array[String]): Unit = {

    // j 代表*    k代表 " "

    for (i <- 1 to 9 ){
      val j = (2*i)-1
      val k = 9-i
      println(" " * k + "*" * j)
    }

    //代码显示更清晰
    for (i <- 1 to 9;j = (2*i)-1;k = 9-i ){

      println(" " * k + "*" * j)

    }

    for (j <- 1 to 17 by 2;k = (17-j)/2 ){

      println(" " * k + "*" * j)

    }
    
    println("-----------------")

    //倒九层妖塔

    for (i <- 1 to 9 reverse){
      val j = (2*i)-1
      val k = 9-i
      println(" " * k + "*" * j)
    }

    
  }

}

运行结果

3fd020f2bcb547ffa3060610ad32a4e1.png

循环返回值

基本语法

val   res = for ( i <- 1 to 10 ) yield i

println(res)

说明:将遍历过程中处理的结果返回到一个新 Vector集合中,使用yield关键字。

注意:开发中很少使用。

案例实操

package Chapter04

object Test_02ForLoop {
  def main(args: Array[String]): Unit = {
    
    //6、循环返回值
    println("----------")
    val a= for (i <- 1 to 10) {
      i
    }
    println("a="+a)
    println("----------")
    //b得到的是一个集合,是一个向量类
    val b= for (i <- 1 to 10) yield i
    println("b="+b)
    println("----------")
    //计算集合里面的数乘2
    val c= for (i <- 1 to 10) yield i * 2
    println("b="+c)
    println("-----------")
    //计算集合里面的数的平方
    val d= for (i <- 1 to 10) yield i * 2 * 2
    println("b="+d)


  }
}

运行结果

5b34431a47c5477e9d067527c3b7da57.png

倒序打印

基本语法

for(i <- 1 to 10 reverse) {

          println(i)

}

 说明:如果想倒序打印一组数据,可以用 reverse。

案例实操

package Chapter04

object Test_02ForLoop {
  def main(args: Array[String]): Unit = {

    //倒序打印
    for (i <- 90 to 100 reverse){
      println("i="+i)
    }

  }
}

运行结果

e656a80b8e3a492bb810273ea611d7cb.png

 

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值