for (i <- 1 to 3){
if (i != 2) { //终止当前正在执行的本次循环,继续下一次
print(i + " ")
}
}
//还可以写成下面这样
for (i <- 1 to 5; if i != 3) {
println(i)
}
4.3.4 循环步长
对1到10所有的技术进行遍历
// 1.to(10).by(2)
//for (i <- 1 to 10 by 2) { 简化后的从1到10,隔二取一
//for (i <- 1.0 to 10.0 by 0.5) { 从1.0到10.0 隔 0.5 取一个
for (i <- 10 to 1 by -1) { //从10到1 每一向前隔一
println(i)
}
4.3.5 嵌套循环
//第一种
for (i <- 1 to 3) {
for (j <- 1 to 3) {
println("i = " + i + ", j = " + j)
}
}
//第二种,简化第一种
//没有关键字,所以范围后一定要加;来隔断逻辑
for (i <- 1 to 3; j <- 1 to 3){
println("i = " + i + ", j = " + j)
}
4.3.6 循环引用变量
for (i <- 1 to 5; j = 10 -i){
//for {i <- 1 to 5; j = 10 -i} { 一般不用{}
println("i = " + i + ", j = " + j)
}
练习1:打印乘法表
//练习2:九层妖塔
//乘法表 1
for (i <- 1 to 9) {
for (j <- 1 to i) {
print(j + "*" + i + "=" + j*i + "\t" )
}
println()
}
//乘法表 2
for (i <- 1 to 9; j <- 1 to i) {
print(s"${j} * ${i} = ${j*i} \t")
if(i == j) { //控制换行
println()
}
}
//等腰三角形
for (i <- 1 to 9) {
print(" " * (9 - i))
print("*" * (2*i -1))
println()
}
4.3.7循环返回值
val res: immutable.IndexedSeq[Int] = for (i <- 1 to 5) yield i
//在原集合基础上*2,放到新集合中去
//第一种乘2
val res: immutable.IndexedSeq[Int] = for (i <- 1 to 5) yield i * 2
//第二种乘2
val res: immutable.IndexedSeq[Int] = for (i <- 1 to 5) yield {
i * 2
}
println(res)
4.3.8 倒叙打印
for (i <- 1 to 5 reverse) {
println(i)
} //5 4 3 2 1
4.4 While和do…While循环控制
//while循环,可能循环0次
var a: Int = 5
while (a >= 1) {
println("zy stbtk")
a -= 1
}
//do...while循环,至少循环一次
var a:Int = 5
do{
println("sss")
a -= 1
} while (a >=1)