scala小練習一
阿新 • • 發佈:2018-12-25
(1)在Scala REPL中,計算3的平方根,然後再對該值求平方。現在,這個結果與3相差多少?
(2)在REPL 中求 2的 1024 次冪。
(3)獲取字串的首字母和尾字母。
(4)定義signum 函式,接收一個Int 型別的變數,如果這個變數為正數則返回1,為負數則返回-1,為零則返回0。
def signum(a:Int): Int ={
if(a>0)
return 1
else if(a<0)
return -1
else
return 0
}
(5)針對java 迴圈編寫一個scala 版
for(int i = 1; i >= 0 ; i –) System.out.println(i);
for(a<- 0 to 1 reverse){
println(a)
}
(6)編寫一個過程 countDown(n: Int) 列印從n 到0 的數字
def countDoun(n:Int){
val a=0 to n
a.reverse.foreach(i => println(i))
}
(7)編寫一個for迴圈,計算字串中所有字母的Unicode程式碼的乘積。舉例來說,”Hello”中所有字串的乘
積為9415087488L
def count(str:String): Long ={
var res:Long=1
for(i<-str){
res=res*i
}
return res
}
(8)彩票小程式,參考java 版的彩票小程式,編寫 Scala 版本的Lottery,實現功能如下:
① 輸入7個 1~35 的數字(使用者購買彩票)
② 隨機生成7個數字,系統自動兌獎並返回中獎結果
def buy(user:Array[Int]): Array[Int] ={
println("請輸入1~35之間的七個整數")
var a=0
while(a<7){
val num=readInt()
if (num>0&&num<=35){
var flag=false
for(b<-user){
if(b==num){
println("輸入重複,請重新輸入")
flag=true
}
}
if(flag==false){
user(a)=num
a+=1
}
}
else
println("輸入資料越界請重新輸入")
}
return user
}
def printuser(user:Array[Int]): Unit ={
println("使用者購買號碼為")
user.foreach(println)
}
def kaijiang(): Array[Int] ={
var ran=1 to 35 toArray
var cp=new Array[Int](7)
var a=0
while(a<7){
val num=(math.random*35+1).toInt //val num=new Random().nextInt(36)
var flag=false
for(b<-cp){
if(b==num)
flag=true
}
if(flag==false){
cp(a)=num
a+=1
}
}
return cp
}
def printcp(cp:Array[Int]): Unit ={
println("系統開獎號碼為")
cp.foreach(println)
}
def duijiang(user:Array[Int],cp:Array[Int]): Int ={
println("使用者中獎號碼:")
var winning=user.filter(cp.contains(_))
winning.foreach(println)
var level:Int=winning.length
return level
}
def fajiang(level:Int): Unit ={
level match {
case 1=>println("7等獎")
case 2=>println("6等獎")
case 3=>println("5等獎")
case 4=>println("4等獎")
case 5=>println("3等獎")
case 6=>println("2等獎")
case 7=>println("1等獎")
case 0=>println("哎……")
}
}
def main(args: Array[String]): Unit = {
var user:Array[Int]=new Array[Int](7)
var cp:Array[Int]=new Array[Int](7)
var level:Int=0
user=buy(user)
printuser(user)
cp=kaijiang()
printcp(cp)
level=duijiang(user,cp)
fajiang(level)
}
(9) 用體重和身高計算BMI值
def bmiStatus(weight:Double,height:Double):String={
val res=weight/(height*height)
println(res)
if(res<18.5)
return "under Weight"
else if(res>24.0)
return "over weight"
else
return "Normal weight"
}