Scala中的If判断&While&For循环

 If 判断: 

 

 1 object TestScalaIf {
 2   def main(args: Array[String]): Unit = {
 3     
 4 //    val resutlt = judge1(-100)
 5 //    println(resutlt)
 6     
 7     val resutlt2 = judge2(100)
 8     println(resutlt2)
 9   }
10   /*
11    * scala中不存在三元运算符,使用if/else
12    */
13   def judge1(x:Int) = {
14     val c = if(x > 0) 1 else "superman"
15     c
16   }
17 
18   /*
19    * scala在做分层判断时,必须要把每一种可能性都判断好
20    */
21   /*
22   def judge2(x: Int) = {
23     if(x>0){
24       1
25     }else if(x<0){
26       -1
27     }else{ //这种情况下和Java没有任何的区别.
28         0
29     }
30   }
31   */
32     def judge2(x: Int) = {
33     if(x>0){
34       1
35     }else if(x<0){
36       -1
37     }
38         0//这个0是无论x是什么样的值都会走的.最后的返回值都是此处的0
39   }
40   
41 }

While和For循环:

循环(while、for) 如果需要倒叙输出,后面加reverse

 

  如果修改步长,可以使用守卫方法,即在生成式后面加一个boolean判断,符合条件的输出

 

 修改步长更简单的方式如下,to后面使用括号,括号中第二个参数表示步长

 

支持类似于java的双重for循环,在scala中只需要一个for即可

 

使用for推导式,可以把结果保存起来

看代码:

  1 object TestScalaFor {
  2   def main(args: Array[String]): Unit = {
  3     /*while循环*/
  4 //    while(true){
  5 //      println(12)
  6 //    }
  7     
  8     /*for循环*/
  9     //之前Java中的for循环的写法
 10     /*普通的for循环
 11      *for(int i=0;i<5;i++){
 12      *
 13      *}
 14      */
 15     
 16     /*增强for循环
 17      *for(List i: list){
 18      * 
 19      * } 
 20      */
 21     
 22     for( i <- 1 to 10){//这个是闭区间
 23       println(i)
 24     }
 25     /*
 26      * 输出结果:
 27      * 1
 28      * 2
 29      * ....
 30      * 10
 31      */
 32     
 33     /*
 34      * println(1 to 10)
 35      * println(1.to(10))
 36      * 这两个打印出来的是 Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 37      * to是一个方法.按F3可以直接进入该方法.
 38      */
 39     
 40     for(i <- 1 until 10){//开区间 前闭后开 通常用于遍历数组
 41       println(i)
 42     }
 43     /*
 44      * 输出结果:
 45      * 1
 46      * 2
 47      * ...
 48      * 9
 49      */
 50     
 51     for(i <-(1 to 10).reverse){//倒序输出
 52       println(i)
 53     }
 54     /*
 55      * 输出结果
 56      * 10
 57      * 9
 58      * ....
 59      * 1
 60      */
 61     
 62     for(i <- "superman"){//遍历字符串
 63       println(i)
 64     }
 65     /*
 66      * 输出结果:
 67      * s
 68      * u
 69      * ....
 70      * n
 71      */
 72     
 73     /*高级for循环*/
 74     for( i <- 1 to 10 ;if i % 2 == 0){//更改步长为2.";" 这个情况下可以加也可以不加
 75       println(i)
 76     }
 77     /*
 78      * 输出结果:
 79      * 2
 80      * 4
 81      * ...
 82      * 10
 83      */
 84     
 85     for( i <- 1 to 10 reverse;if i % 2 == 0){//";" 这个情况下必须加上,否则编译不通过.
 86       println(i)
 87     }    
 88     /*
 89      * 输出结果
 90      * 10
 91      * 8
 92      * ...
 93      * 2
 94      */
 95     
 96     /*改变步长的第二种方式*/
 97     for(i <- 1 to (10,3)){//改变步长方式二
 98       println(i)
 99     }
100     /*
101      * 输出结果:
102      * 1
103      * 4
104      * 7
105      * 10
106      */
107     
108     //通过yield将一个集合转换成为另外一个集合的方法叫for的推导式
109     val c = for(i <- 1 to 10) yield { i + 1}
110     println(c)
111     /*
112      * 输出结果:
113      * Vector(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
114      */
115     
116     for(i <- 1 to 10 ; j <- 1 to 5){//双重for循环
117       println(i + "---->" +j)
118     }
119   }
120 }
原文地址:https://www.cnblogs.com/DreamDrive/p/5645377.html