if-else if-else
Kotlin的條件判斷式跟Java, C都是一樣的, 如下
fun main(args:Array<String>){
print("請輸入價格 :")
var price= Integer.parseInt(readLine())
if (price <=50){
print("便宜")
}
else if (price<=100){
print("普通價格")
}
else{
print("搶錢啊")
}
}
字串判定
Java字串內容是否一樣, 需使用 str.equals(). 而在kotlin一樣是使用equals()來判定.
只是Kotlin比較人性化, 覆寫 “==” 運算子來判定內容
fun main(args:Array<String>){
print("請輸入名字 : ")
var name= readLine()
if (name=="Thomas")print("正確")
else print("錯誤")
}
布林值
Boolean只有true/false二個值, 使用Boolean時, 雖可寫成 if(runFlag==true),
但精簡成如下更為正確
fun main(args:Array<String>){
var runFlag:Boolean=true
if(runFlag){
print("執行")
}
else{
print("不執行")
}
}
省略{}
當區塊內只有一行時, 可以省略 “{}”, 亦可將區塊內的那一行置於 if or else的後面
fun main(args:Array<String>){
var runFlag:Boolean=true
if(runFlag) print("執行")
else print("不執行")
}
if-else if-else傳回值
fun main(args:Array<String>){
print("請輸入數量 : ")
var qty= readLine()?.toInt()?:0
var discount=if(qty<10)0.9 else if(qty<50)0.8 else 0.7
print("折扣為 :%.1f".format(discount))
}
底下是練習輸入薪資, 然後依薪資等級扣除的所得稅
0 <=salary<20000 : 6%
20000<=salary<40000 : 7%
40000<=salary<60000 : 8%
60000<=salary<80000 : 9%
80000以上(含) : 13%
請列出薪資, 所得稅, 實領金額
fun main(args:Array<String>){
print("請輸入薪資 : ")
var salary= readLine()?.toInt()?:0
var tax=
if(salary<20000)0.06
else if (salary<40000)0.07
else if (salary<60000)0.08
else if (salary<80000)0.09
else 0.13
println("薪資 : %d, 所得稅 : %.2f, 實領 : %.2f".format(salary, salary*tax, salary*(1-tax)))
}
if傳回值還蠻神奇的喔, 可以依不同狀況傳回不同的型態, 如下所示
fun main(args:Array<String>){
var qty=99;
var discount=
if(qty>=100)0.8
else "數量不足, 不打折"
print(discount);
}
範圍值判定
如下代碼, 可以直接判定某值是否在一特定範圍內
fun main(args:Array<String>){
print("請輸入密碼 :")
var password= readLine()?.toInt()?:0
if (password in 1..100) print("介於1-100之間")
else print("輸入錯誤")
}
介於某範圍的表示法為 1..100, 中間有二個 “..”. 感覺這 kotlin 抄襲 Python 還蠻透徹的.
承上薪資所得稅之練習題, 亦可寫成如下
fun main(args:Array<String>){
print("請輸入薪資 : ")
var salary= readLine()?.toInt()?:0
var tax=
if(salary in 0..1999)0.06
else if (salary in 20000..39999)0.07
else if (salary in 40000..59999)0.08
else if (salary in 60000..79999)0.09
else 0.13
println("薪資 : %d, 所得稅 : %.2f, 實領 : %.2f".format(salary, salary*tax, salary*(1-tax)))
}
When
C/Java 有 switch,在 Kotlin 則改為 when。先看一下 java 的語法。
public class Main {
public static void main(String[] args) {
int day=3;
String str="";
switch(day){
case 1 :
System.out.println("星期一");
break;
case 2 :
System.out.println("星期二");
break;
case 3 :
System.out.println("星期三");
break;
default :
System.out.println("不是有效日期");
}
String result=switch(day){
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
default -> "不是有效日期";
};
System.out.println(result);
}
}
在 Kotlin 中,when 的每一個條件都會自動中斷,不會灌到下一個條件
fun main(args:Array<String>){
print("請輸入婚姻狀況 :")
var m= readLine()
when(m){
"A", "a"->{
print("單身")
print("而且未婚")
}
"B", "b" ->print("已婚")
"C", "c" ->print("離婚")
"D", "d" ->print("同居")
else ->{
print("不詳")
print("輸入錯誤")
}
}
}
如果是數字的話,可以使用 in 設定在某一範圍值
fun main(args:Array<String>){
print("請輸入單價 :")
var price= readLine()?.toInt()?:0
when(price){
in 0..100->{
print("便宜")
print("快來買")
}
in 101..150->print("普通")
else ->print("太貴了")
}
}
when 亦可直接返回值,不過最後一定要搭配 else,如果沒有 else 會出錯
fun main() {
val day=3
val result = when (day){
1 -> "星期一"
2 -> "星期二"
3 -> "星期三"
else ->"無效的日期"
}
println (result)
}
&& ||
二個條件的結合,可以使用 &&(and) 或者是 ||(or)連接, 如下所示
fun main(args:Array<String>){
println("空姐錄取條件")
print("請輸入身高 :")
var height= readLine()?.toInt()?:0
print("請輸入年齡 :")
var age= readLine()?.toInt()?:0
if(age<=40 && height>=160)print("錄取")
else print("不錄取")
}
請注意,
&& 的第一條件如果不成立, 則第二條件不執行.
|| 的第一條件若成立, 則第二條件不執行.
fun main(args:Array<String>){
var a=1
var b=10
if (a++>2 && b--<10){
println("true")
}
else{
println("false")
}
println("a:%d, b:%d".format(a, b))
}
結果為 :
false
a:2, b:10
終極密碼
fun main(args:Array<String>){
var password=(Math.random()*100+1).toInt()
var max=100
var min=1
while(true){
print("請輸入$min..$max 之間的數 : ")
var g= readLine()?.toInt()?:0
if (g<password)min=g
else if (g>password)max=g
else{
println("bingo")
break
}
}
}
