Scala中的while循环

49 阅读2分钟

while格式

while(condition) {// 满足条件就执行,如果条件一直满足,就一直执行。
statement(s)
}

屏幕截图 2025-09-24 092034.png

一、while循环

1.如何把”i miss you ”重复输出3000次?

    object basic13 {
      def main(args: Array[String]): Unit = {
        //while 循环(重复做)
        //i:循环变量,控制循环执行次数的变量。一般这个变量名设置为i。
        var i=1
        while (i<3001){
          println(s"${i},I miss you!")
          i +=1
        }
        println("循环结束")
      }
    }

2.输出1~100内的奇数,每个一行

    object basic14 {
      def main(args: Array[String]): Unit = {
        //while 循环(重复做)
        //i:循环变量,控制循环执行次数的变量。一般这个变量名设置为i。
        //它的起点不一定非要从0和1开始

        // 循环输出1~100奇数,每行一个
        var i=1
        while (i<=100){
          if (i%2==1){
            println(i)
          }
          i += 2
        }
      }
    }

3.求1-100的和

    object basic15 {
      def main(args: Array[String]): Unit = {
        //while 循环(重复做)
        //i:循环变量,控制循环执行次数的变量。一般这个变量名设置为i。
        //它的起点不一定非要从0和1开始

        //目标:1+2+3+4+5+...+100的结果
        var sum=0
        var i=1
        while (i<=100){
          sum=sum+i
          i+=1
        }
        println(s"sum=$sum")
      }
    }

二、死循环

在需要一直执行的时候,就可以使用死循环。

1.不停地判断用户的输入的内容是否是闰年。

    object basic16 {
      def main(args: Array[String]): Unit = {
        //while 循环(重复做)
        //i:循环变量,控制循环执行次数的变量。一般这个变量名设置为i。
        //它的起点不一定非要从0和1开始

        //目标:重复 判断用户输入的年份是否是闰年
        while (true){
          print("请输入你要判断的年份:")
          var year =scala.io.StdIn.readInt()
          if (year%400 ==0 || (year%4==0 && year%100!=0)){
            println(s"$year 是闰年")
          } else {
            println(s"$year 不是闰年")
          }
        }
      }
    }

三、break

scala中没有现成的break关键字,而是使用面向对象的方式来代替,底层会抛出异常来跳出循环,外层捕获异常。

    import scala.util.control.Breaks.{break, breakable}
    object basic17 {
      def main(args: Array[String]): Unit = {
        //while 循环(重复做)
        //i:循环变量,控制循环执行次数的变量。一般这个变量名设置为i。
        //它的起点不一定非要从0和1开始

        //目标:重复 判断用户输入的年份是否是闰年,如果用户输入0,则结束判断,退出程序(跳出循环)
        
        breakable{
          while (true){
            print("请输入你要判断的年份:")
            var year =scala.io.StdIn.readInt()
            
            if (year==0){
              println("这里要结束循环")
              break
            }
            
            if (year%400 ==0 || (year%4==0 && year%100!=0)){
              println(s"$year 是闰年")
            } else {
              println(s"$year 不是闰年")
            }
          }
        }
        println("欢迎下次光临")
      }
    }

通过特殊的语法操作,可以让代码变得简单一些。

四、do while循环

格式:

do {
statement(s);
} while( condition );

示意图:

屏幕截图 2025-09-24 093340.png

1、输出1 - 10

    var i=1
    do{  
        println(s"i=$i")  
         i+=1  
      } while (i<= 10)

两者区别:do ... while 和while的区别在于,一定会执行一次。

如下例子,说明一定会执行一次。

    var i=1  
    do{  
        println(s"i=$i")  
         i+=1  
      }while(i<1)