目录
基本语法
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+" ")
- }
-
-
-
- }
- }
运行结果

基本语法
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)
- }
-
- }
- }
运行结果

- 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()
- }
-
-
-
- }
-
- }
运行结果

九九乘法表倒序打印
- 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()
- }
-
-
-
- }
-
- }
运行结果

基本语法
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)
- }
-
- }
- }
运行结果

- 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)
- }
-
-
- }
-
- }
运行结果

基本语法
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)
-
-
- }
- }
运行结果

基本语法
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)
- }
-
- }
- }
运行结果
