if else
单分支
if(n == 0)
println("n=0")
多分支
if(n == 0) {
println("n=0")
}else if(n < 0){
println("-")
}else {
println("+")
}
分支语句返回值
def main(args: Array[String]) :Unit={
val n = -11
val result:String =
if(n == 0) {
println("n=0")
"n=0" //想要返回String类型,在后面添加String语句
}else if(n < 0){
println("-")
"-"
}else {
println("+")
"+"
}
}
def main(args: Array[String]) :Unit={
val n = -11
val result:Unit = //容许使用Unit来返回String
if(n == 0) {
println("n=0")
"n=0"
}else if(n < 0){
println("-")
"-"
}else {
println("+")
"+"
}
}
For推导式
//范围遍历:从1遍历到10
for (i <- 1 to 10){
print(i)
}
//不包含10(边界)进行遍历
for(i <- Range(1,10)){
print(i)
}
for(i <- 1 until(10)){
print(i)
}
集合遍历
for(i <- Array(1,2,3,4)){
print(i)
}
for(i <- List(1,2,3,4)){
print(i)
}
for(i <- Set(1,2,3,4)){
print(i)
}
循环守卫
循环步长
```scala
步长为2遍历输出
for (i <- 1 to 10 by 2){
print(i)
} // 13579
倒序输出
for (i <- 30 to 10 by -2){
print(i +"\\")
} // 30\28\26\24\22\20\18\16\14\12\10\
for (i <- 1 to 10 reverse){ print(i +”\“) } // 10\9\8\7\6\5\4\3\2\1\
0.5遍历
for (i <- 1.0 to 10.0 by 0.5){ //此时使用to有可能精度缺失,使用 print(i +”\“) } // 1.0\1.5\2.0\2.5\3.0\3.5\4.0\4.5\5.0\5.5\6.0\6.5\7.0\7.5\8.0\8.5\9.0\9.5\10.0\
<a name="OoFfo"></a>
## 循环嵌套
```scala
#Java写法
for(i <- 1 to 5){
for(j <- 1 to 5){
println(i+ "&" + j )
}
}
#Scala写法
for(i <- 1 to 5;j <- 1 to 5){
println(i+ "&" + j )
}
for{
i<- 1 to 10
j= 10 -i
}
{
println(i+ "&" + j)
}
循环返回值
val a = for(i <- 1 to 10) yield i
println(a)
//Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val b: IndexedSeq[Int]= for(i <- 1 to 10) yield i *2
println(b)
//Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
while和do…while
在Scala是不推荐的 因为要在while循环体外定义一个变量
var a:Int= 10
while(a >= 0){
println(a)
a -=1
}
循环中断
Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。Scala中使用breakable控制结构来实现break 和continue 功能。
使用breakable()
示例:
import scala.util.control._
loop.breakable {
for( a <- numList){
println( "Value of a: " + a );
if( a == 4 ){
loop.break;
}
}
}