1.for循环
格式:
for ( 循环变量 <- 数据集) {]()
// 循环体代码
}
1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。
2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。
var array2 = 1 until 5 // 1,2,3,4
for (i <- array){
println(i)
}
1.1 until 5 等价于 Range(1,5)
val fruits = List("apple","banana","origane","strawberry")]()
for(fruit <- fruits){
println("fruit is " + fruit)
}
以下代码,为取值1~100,
object fxh {
def main(args: Array[String]): Unit = {
for(i <- 1 to 100){
println(i)
}
}
}
运行结果如下:
2.循环守卫
可以在循环中添加条件,如果条件成立就执行循环。这个叫循环守卫。
格式:
for(循环变量 <- 数据集 if condition1; if condition2 ...){]()
循环体
}
object swxh {
def main(args: Array[String]): Unit = {
/*
循环守卫
当后面的条件都满足的时候,才去执行循环体的内容
格式:
*( 循环变量 <- 起点 to 终点; if(条件1); if(条件2);...if(条件n); ) {
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)
}
}
}
3.
格式:
for(i <- 1 to 100 by 2 ){
println(i)
}
例子如下:
object xhbc {
def main(args: Array[String]): Unit = {
// 输出1 ~ 100 中的奇数
// var i = 1
// while(i <= 100){
// println(i)
// i += 2
// }
for(i <- 1 to 100 by 20){
println(i)
}
}
}
运行结果:
格式1:1 to 5 by 2
格式2:Range(1,5,2)
循环步长:每次循环过后,循环变量的自增数值。
4.for循环中的break
代码如下:
import scala.util.control.Breaks.{break, breakable}
object xt {
def main(args: Array[String]): Unit = {
// break跳出整个for循环
// 格式:
// breakable {
// for( 循环变量 <- 起点 to 终点 ) {
// break
// }
// }
//
breakable {
for (i <- 1 to 100) {
// 如果遇到了第一个能整除9的数字就提前结束循环
if (i % 9 == 0) {
// 结束循环
break
}
println(i)
}
}
}
}
例题:问一个数是否为素数?
object sl929 {
def main(args: Array[String]): Unit = {
val n = 97
// 假设它是素数
var isPrime = true
for(i <- 2 to n-1) {
if(n % i == 0) { // 能整除
isPrime = false
}
}
if(isPrime) {
println(s"n是素数") }
else { println(s"n不是素数")
}
}
}
运行效果如图所示:
下图为改进过后的例子,较上图而言,更加具体全面。
**例题:**小球从 100 米高处自由落下,着地后又弹回高度的一半再次落下,如此重复。问经过多少次落地后,小球弹起的高度才会低于 0.5 米?
代码如图所示: