一.for循环
for(循环变量 <- 数据集) {
// 循环体代码
}
说明:
1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。
2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。
object Base24 {
def main(args: Array[String]): Unit = {
// by:步长,循序变量每次增加的值。默认就是1
// for( i <- 1 to 100 by 1) <====> for( i <- 1 to 100)
var sum = 0
for(i <- 1 to 100 by 2 ){
println(i)
sum += i
}
println(sum)
}
}
object Base25 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 5){ //控制有几行
for(j <- 1 to i){ // 控制具体每一行上的内容
print(i)//不换行
}
println() // 换行
}
}
}
二.循环守卫
在循环中添加条件,如果条件成立就执行
格式:
for(循环变量 <- 数据集 if condition1; if condition2 ...){
循环体
}
三.循环步长
如何输出1 ~ 100 之间的奇数?
可以按1,3,5... 这个格式来输出。这就涉及到步长
格式1:1 to 5 by 2
格式2:Range(1,5,2)
四.循环的返回值
for也可以获取到返回值,使用yield
val ret = for(i <- 1 to 3) yield { i*2 }
println(ret)
println(ret(1))
五.循环嵌套
循环中有循环
for(i <- 1 to 3){
for(j <- 1 to 3){
println("i=" + i +", j=" + j)
}
}
等价于
for(i <-Range(1,4); j<-Range(1,4){
println("i=" + i +", j=" + j)
}
九九乘法表
object Base26 {
def main(args: Array[String]): Unit = {
for(i <- 1 to 9){ //行
for(j <- 1 to i){ // 具体一行上的内容
printf("%d*%d=%-4d",j,i,i*j)//不换行
}
println() // 换行
}
}
}
六.continue
在scala中是没有break和continue关键字的,如果一定要用,可以用scala.util.control包下的Breaks类的break
import scala.util.control.Breaks._
object MainFor {
def main(args: Array[String]): Unit = {
for(i <- 1 to 10){
breakable {
if(i%3 == 0){
// continue
break
}
println(i)
}
}
}
}
将breakable写在for循环内部,就是continue