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


    目录

     

    循环步长

    嵌套循环

     经典案例:九九乘法表

    引入变量

    经典案例:九层妖塔

    循环返回值

    倒序打印


     

    循环步长

    基本语法

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

              println(" i=" + i )

    }

    说明:by 表示步长

    案例实操 

    1. package Chapter04
    2. object Test_02ForLoop {
    3. def main(args: Array[String]): Unit = {
    4. //循环步长
    5. //1、计算1-10之间所有的奇数
    6. for (i <- 1 to 10 by 2){
    7. print("i=:"+i+" ")
    8. }
    9. println()
    10. //计算1-10之间所有的偶数
    11. for (i <- 10 to 1 by -2){
    12. print("i=:"+i+" ")
    13. }
    14. println()
    15. //计算1-10
    16. for (i <- 1 to 10 ){
    17. println("i="+i)
    18. }
    19. println("---------")
    20. //计算1-10倒过来输出
    21. for (i <- 1 to 10 reverse){
    22. print("i=:"+i+" ")
    23. }
    24. //步长不能为0
    25. // for (i <- 1 to 10 by 0){
    26. // print("i=:"+i+" ")
    27. //}
    28. println()
    29. //步长为Double类型,有时候会不正常或超出范围
    30. for (i <- 1.0 to 3.0 by 0.5){
    31. print("i=:"+i+" ")
    32. }
    33. }
    34. }

    运行结果

    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)

             }

    }

    案例实操 

    1. package Chapter04
    2. object Test_02ForLoop {
    3. def main(args: Array[String]): Unit = {
    4. //5、循环嵌套
    5. //3*3数组
    6. for(i <-1 to 3 ) {
    7. for (j <- 1 to 3) {
    8. println("i=" + i + ",j=" + j)
    9. }
    10. }
    11. println("--------------")
    12. //4*5数组
    13. for(i <-1 to 4; j <-1 to 5){
    14. println("i=" + i + ",j=" + j)
    15. }
    16. }
    17. }

    运行结果

    33a48a309dc247c6bdf281210dfba734.png

     经典案例:九九乘法表

    1. package Chapter04
    2. object Test03_Practice_MulTable {
    3. def main(args: Array[String]): Unit = {
    4. for (i <- 1 to 9 ){
    5. for (j <- 1 to i){
    6. print(s"$j * $i = ${i * j} \t")
    7. }
    8. println()
    9. }
    10. println("========================================")
    11. //简写
    12. for (i <- 1 to 9; j <- 1 to i ){
    13. print(s"$j * $i = ${i * j} \t")
    14. if (i==j) println()
    15. }
    16. }
    17. }

    运行结果

    03c03f6066fb4bdb9e98ed74021c4de0.png

     九九乘法表倒序打印

    1. package Chapter04
    2. object Test03_Practice_MulTable {
    3. def main(args: Array[String]): Unit = {
    4. println("========================================")
    5. //简写
    6. for (i <- 1 to 9 reverse; j <- 1 to i ){
    7. print(s"$j * $i = ${i * j} \t")
    8. if (i==j) println()
    9. }
    10. }
    11. }

    运行结果

    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 )

    }

    案例实操

    1. package Chapter04
    2. object Test_02ForLoop {
    3. def main(args: Array[String]): Unit = {
    4. //循环引入变量
    5. for (i <- 1 to 10; j = 10 -i){
    6. println("i="+i+",j="+j)
    7. }
    8. println("---------")
    9. for (i <- 1 to 10){
    10. val j = 10 -i
    11. println("i="+i+",j="+j)
    12. }
    13. println("---------")
    14. for {i <- 1 to 10
    15. j = 10 - i
    16. } {
    17. println("i="+i+",j="+j)
    18. }
    19. }
    20. }

    运行结果

    2a5be2cbe76b42cb97866eca1e810797.png

    经典案例:九层妖塔

    1. package Chapter04
    2. object Test_04Practice_Pyramid {
    3. def main(args: Array[String]): Unit = {
    4. // j 代表* k代表 " "
    5. for (i <- 1 to 9 ){
    6. val j = (2*i)-1
    7. val k = 9-i
    8. println(" " * k + "*" * j)
    9. }
    10. //代码显示更清晰
    11. for (i <- 1 to 9;j = (2*i)-1;k = 9-i ){
    12. println(" " * k + "*" * j)
    13. }
    14. for (j <- 1 to 17 by 2;k = (17-j)/2 ){
    15. println(" " * k + "*" * j)
    16. }
    17. println("-----------------")
    18. //倒九层妖塔
    19. for (i <- 1 to 9 reverse){
    20. val j = (2*i)-1
    21. val k = 9-i
    22. println(" " * k + "*" * j)
    23. }
    24. }
    25. }

    运行结果

    3fd020f2bcb547ffa3060610ad32a4e1.png

    循环返回值

    基本语法

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

    println(res)

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

    注意:开发中很少使用。

    案例实操

    1. package Chapter04
    2. object Test_02ForLoop {
    3. def main(args: Array[String]): Unit = {
    4. //6、循环返回值
    5. println("----------")
    6. val a= for (i <- 1 to 10) {
    7. i
    8. }
    9. println("a="+a)
    10. println("----------")
    11. //b得到的是一个集合,是一个向量类
    12. val b= for (i <- 1 to 10) yield i
    13. println("b="+b)
    14. println("----------")
    15. //计算集合里面的数乘2
    16. val c= for (i <- 1 to 10) yield i * 2
    17. println("b="+c)
    18. println("-----------")
    19. //计算集合里面的数的平方
    20. val d= for (i <- 1 to 10) yield i * 2 * 2
    21. println("b="+d)
    22. }
    23. }

    运行结果

    5b34431a47c5477e9d067527c3b7da57.png

    倒序打印

    基本语法

    for(i <- 1 to 10 reverse) {

              println(i)

    }

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

    案例实操

    1. package Chapter04
    2. object Test_02ForLoop {
    3. def main(args: Array[String]): Unit = {
    4. //倒序打印
    5. for (i <- 90 to 100 reverse){
    6. println("i="+i)
    7. }
    8. }
    9. }

    运行结果

    e656a80b8e3a492bb810273ea611d7cb.png

     

     

     

     

  • 相关阅读:
    Word标题编号转换为纯文本
    Makefile 介绍
    golang 高阶函数
    web3.js:使用eth包
    推广明星产品回报最大,推广新产品风险最大,为何还要推广新品?
    备战数学建模46-小波神经网络WNN(攻坚站11)
    k8s:部署k8s单master节点集群(kubeadm)v1.23.13
    基于白鲸优化算法的函数寻优算法
    华为云分布式缓存服务DCS 8月新特性发布
    如何设计一个牛逼的消息队列?
  • 原文地址:https://blog.csdn.net/qq_70085330/article/details/126185125