6、scala中for语句
增强for循环(==java中的foreach循环)
def main(args: Array[String]): Unit = {
var array = Array(11,22,33,44)
for(a<-array){
println(a)
}
var array1 = List("zhangsan","lisi","wangwu")
for(a1<-array1){
println(a1)
}
}
并列for循环
1、双重for循环的另一种体现形式 : 一个表达式中放两个条件
九九乘法表
def main(args: Array[String]): Unit = {
for(a<-1.to(9);b<-1 to a){
print(b+"*" + a + "=" + (a * b ) + "\t ")
if (a==b) println()
}
}
双重for循环
九九乘法表
def main(args: Array[String]): Unit = {
for(a<-1 to 9){
for(b<-1 to a){
print(a+"*"+b+"="+(a*b)+"\t")
}
println()
}
}
冒泡排序
def main(args:Array[String]):Unit={
var arr = Array(3,34,5,17,1,20)
for(i<- 0 until arr.length-1){ //比较回数
for(e<- 0 until arr.length-1-i){ //比较次数
if(arr(e)>arr(e+1)){ //进行比较,如果前面大于后面换位置
val tmp = arr(e) //声明一个临时变量
arr(e) = arr(e+1)
arr(e+1) = tmp
}
}
}
for(e<-arr)
println(e)
}
}
普通for循环
使用下标的形式
和java中的 for(int i =0 ; i<arr.length ; i++)一样的
取值范围方法
to :包前包后 until :包前不包后
def main(args: Array[String]): Unit = {
val array = Array(11,22,33,44)
//to是包前包后,取值的时候需要将数组的长度-1
for(a<-0 to array.length-1){
println(a) //打印的是所有数组的下标
println(array(a)) //打印数组中的每一个元素
}
val list = List("zhangsan","lisi","wangwu")
for(li<-0 until list.length){
println(li)
println(list(li))
}
}
守卫for循环
1、fou循环守卫是在for循环表达式中添加了: if选择判断语句;
求出1-100中的所有偶数
def main(args: Array[String]): Unit = {
/*
for(a<-1 to 100 if(a%2==0)){
println(a)
}
*/
//使用yield
val res = for(a<-1 to 100 if(a%2==0))
yield a
for(r<-res){
println(r)
}
}
带返回值的for循环(yield关键字)
1、for是没有返回值的,如果想让for循环有返回值,使用 YIELD 关键字
2、FOR循环中的YIELD关键字会把当前的元素记下来,保存在集合中,循环结束后将返回该集合
3、注意 : 如果想让FOR循环有返回值,不能使用 { }
def main(args: Array[String]): Unit = {
val arr = Array(56,45,43,23,21,67,98,100)
val res = for (a<-arr)
yield a*10
//yield关键字会把当前的元素记下来
//保存在集合中,循环结束后后将返回该集合
for(r<-res)
println(r)
}

浙公网安备 33010602011771号