for循环
格式
for(循环变量 <- 起点 to 终点){
println(循环变量)
}
示例:
for(i <- 1 to 100){
println(i)
}
要点:
- 循环变量不需要去加var
- 循环变量只能在循环{}内使用
for v.s. while
- for 适用于明确地知道循环起点和终点
- while 适用于不确定循环次数的情况
循环守卫
定义
当后面的条件都满足的时候,才会去执行循环体的内容
格式
for(循环变量 <- 起点 to 终点; if(条件1);if(条件2);if(条件3)){
println(循环变量)
}
输出1-100中能整除2,3,4的数字
for(i <- 1 to 100; if(i%2 == 0); if(i%3 == 0); if(i%4 == 0)){
println(i)
}
循环步长
定义
每次循环之后,循环变量的自增数值
格式
for(循环变量 <- 起点 to 终点 by 步长){
println(循环变量)
}
代码示例:
for(i <- 1 to 100 by 20){
println(i)
}
break 跳出 整个for循环
格式
breakable {
for(循环变量 <- 起点 to 终点){
break
}
}
综合示例
示例1
判断素数
- 只能被1 和 它自己整除的数
- eg:2,3,5,7,11,13,17,19......97
- 思路:用2~(n-1) 依次去除这个数,如果能整除就说明不是素数
- 例如:
- n = 9
-
- 2 不能整除
-
- 3 能整除(不是素数)
- n = 35
-
- 2 不能整除
-
- 3 不能整除
-
- 4 不能整除
-
- 5 能整除(不是素数)
代码示例:
// breakable+break:优化不是素数的情况:提前结束循环
// Math.sqrt(n):减少搜索范围
val n = 97
var isPrime = true
breakable{
for(i <- 2 to Math.sqrt(n).toInt){
if(n%i == 0){ // 能整除,结束循环
println(s"${i}能整除")
isPrime = false
}
break
}
}
if(isPrime){
print(s"${n}是素数")
} else {
print(s"${n}是不素数")
}