大数据技术之Scala
======第一篇:Scala编程语言=====
Scala语言基础(三)
Scala的循环
Scala拥有与Java和C++相同的while和do while循环
Scala中,可以使用for和foreach进行迭代
1)使用for循环案例:
注意:
(1) <- 表示Scala中的generator,即:提取符
(2)第三种写法是第二种写法的简写
在for循环中,还可以使用yield关键字来产生一个新的集合
在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。
2)使用while循环:注意使用小括号,不是中括号
3)使用do ... while循环
4)使用foreach进行迭代
注意:在上面的例子中,foreach接收了另一个函数(println)作为值
5)程序整体实现
package basicXunhuan
import scala.math.sqrt
import scala.util.control.Breaks._
/**
* scala 循环
*/
/**
* object 相当于Java中的static(静态的)
*
* java中使用static关键字来表示静态,
* Scala中没有static关键字,使用object来表示
*
* object中所有内容都是静态的
*/
object xunHuan {
def main(args: Array[String]): Unit = {
//定义一个集合
var list= List("Mary", "Tom", "Mike")
//1.for循环
println("--------------for循环第一种写法------------------")
//1)将list中的每一个元素依次赋给s,再直接打印出来,用小括号
for(s<-list) println(s)
println("--------------for循环第二种写法------------------")
//2)打印出长度大于3的名字,用大括号
for{
s<-list
if(s.length>3)
}println(s)
println("--------------for循环第三种写法------------------")
//3)打印出长度小于等于3的名字,用小括号
for (s<-list if s.length<=3) println(s)
println("--------------for循环第四种写法------------------")
//4)使用yield关键字
// 作用:把list中的元素取出来都变成大写,返回一个新的集合
var newList=for{
s<-list
s1=s.toUpperCase //把名字变成大写
}yield (s1)
for(s<-newList)println(s)
//2.while循环
println("--------------while循环写法------------------")
//定义循环变量
var i=0
while(i<=list.length){
println(i)
i+=1 //自增,Scala里没有++
}
//3.do while循环
println("--------------do while循环写法------------------")
//定义循环变量
var j=0
do{
println(j)
j+=1
}while(j<=list.length)
//4.foreach循环写
println("--------------foreach循环写法------------------")
//foreach就是将list中每一个元素都取出来,赋给参数的函数
// println 将list中的每一个元素打印出来
list.foreach(println)
println("--------------判断素数(质数)问题------------------")
/**
* 循环的嵌套
* 判断101-200之间有多少个素数(质数)
*
* 素数就是用一个待测数分别除以大于1且小于自身的整数的数,如果能被整除,该待测数就不是素数;
* 反之,如果待测数只能被自身或是1整除,就说明该待测数是素数
*
* 简单的来说,从2循环到根号下待测数就可以测试出该数是否为素数。
*/
var index_iner=0
var n=0 //用于累计素数的个数
for(index_outer<-101 until 200) {
var b=false //默认是素数,不能被整除
breakable{
index_iner=2
while(index_iner<=sqrt(index_outer)){
//判断是否是素数
if(index_outer%index_iner==0){
b=true //不是素数,被整除了
break
}
//如果不能整除,就换下一个数作为新的除数
index_iner+=1
}
}
if(!b)n+=1 //如果不能被2-根号下它本身的数整除,就说明是素数
}
println("素数个数为:"+n)
//素数个数为:21
println("--------------累加问题------------------")
/**
* 求1-100的和
*/
var sum=0 //用于累加做和
for(x<-1 until 101) {
sum+=x
}
print("1-100的和为:" + sum)
}
}