中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin中循環和異常的示例分析

發布時間:2021-08-19 14:11:17 來源:億速云 閱讀:132 作者:小新 欄目:移動開發

小編給大家分享一下Kotlin中循環和異常的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

引言

在 Kotlin 的循環語句中,while 循環還有 do...while 循環和 Java 中是一致的,在這里就不再細說,而for 循環則和 Java 中有了很大的區別,異常處理也有了不同。

迭代數字

Java 中的 for 循環,總是先初始化值,判斷值是否在限定的范圍內,在每一次循環更新值,一直到超出范圍。

而在 Kotlin 中,for 循環沒有這樣的用法,但是為了替代這種常見用法,Kotlin 使用了區間的概念。

區別在本質上就是兩個值之間的間隔,一個初始值,一個結束值,使用 .. 運算符表示,通常是數字。

val oneToTen = 0..10

上面的表達式等同于 Java 中 0 < oneToTen <= 10

Kotlin 中的區間是閉合的,結束值始終是區間的一部分。

那么舉一個例子,如何使用 for 循環打印 0~100 之間的數字呢?

for(i in 0..100) {
 println(i)
}

>> 0
>> 1
>> 2
...
>> 100

在這里,i 的初始值是0,結束值是100。等同于 Java 代碼。

/* Java */
for(int i = 0; i <= 100; i++) {
 println(i);
}

這時來了新的需求,要求倒序打印從100~0的數字,并要求只打印偶數。

for(i in 100 downTo 0 step 2) {
 println(i)
}

>> 100
>> 98
>> 96
...
>> 0

這里我們可以看到使用了 downTo 和 step,見名知意,downTo 表示從100 到 0 倒序,step 表示間隔,不寫默認step 1。等同于 Java 代碼。

/* Java */
for(int i = 100; i >= 0; i-=2) {
 println(i);
}

迭代集合

不管是在 Java 中還是在 Kotlin 中,for 循環使用最多的場景還是對集合的迭代。

首先我們來看看在 Java 中迭代一個 Map 集合,并將鍵值對打印出來。

/* Java */
 HashMap<Integer, String> map = new HashMap<>();
map.put(1, "100");
map.put(2, "200");

Set<Integer> keySet = map.keySet();

for (int key : keySet) {
 System.out.println(" key:" + key + " value:" + map.get(key));
}

>> key:1 value:100
>> key:2 value:200

Java 中要先獲取鍵的集合,遍歷鍵的集合,獲取對應值。

那么 Kotlin 中如何遍歷呢?

/* Kotlin */
val map = hashMapOf<Int, String>()\
map[1] = "100"
map[2] = "200"
for((key, value) in map) {
 println(" key:$key value:$value")
}

>> key:1 value:100
>> key:2 value:200

怎么樣,是不是方便了很多。

同時,上面的代碼中還有另一個簡單的小技巧:你可以用map[key]來獲取值,也可以用map[key] = value來設置值,而不用調用get()  put()方法。

.. 語法不僅可以創建數字區間,也可以創建字符區間 val aTof = 'a'..'f'

如果要迭代一個 list 集合,在 Java 中要這么做:

/* Java */
ArrayList<String> ls = new ArrayList<>();
ls.add("100");
ls.add("200");

// 只是迭代集合,打印集合中的數據
for(String str : ls) {
 System.out.println(str);
}

>> 100
>> 200

// 打印集合數據同時明確數據對應的下標
for(int i = 0; i < ls.size(); i++) {
 System.out.println("index:" + i + " value:" + ls.get(i));
}

>> index: 0 value: 100
>> index: 1 value: 200

接下來使用 Kotlin 實現:

/* Kotlin */
val ls = arrayListOf<String>()
ls.add("100")
ls.add("200")

for (i in 0 until ls.size) {
 println("index:$i value:${ls[i]}")
}

>> index: 0 value: 100
>> index: 1 value: 200

for ((index, value) in ls.withIndex()) {
 println("index:$index value:$value")
}

>> index: 0 value: 100
>> index: 1 value: 200

這里我們又使用了一個新的方法 until,其等同于0..ls.size-1,同樣的,我們也可以使用 withIndex 方法來達到和 map 集合遍歷一樣的效果,同時獲取鍵和值。

Kotlin 中使用 in 來檢查一個值是否在區間中,或者它的逆運算 !in。同時 in 也可以作為 when 的分支。

fun checkChar(c: Char) = when(c) {
 in '0'..'9' -> "number"
 in 'a'..'z', in 'A'..'Z' -> "string"
 else -> "don't know"
}

Kotlin 中的異常

Kotlin 中的異常處理和 Java 中大致相同。

同時 Kotlin 中的 throw 結構以及 try...catch 結構和 Kotlin 中的 if 語句一樣是表達式,可以作為另一個表達式的一部分使用。

val num = if(n in 0..100) {
   n
   } else {
   throw IllegalArgumentException("The num value must between 0 and 100!")
   }

// 將一個字符串轉換成數字,若不是數字,返回 null
fun transform(str: String) : Int? {
 try {
 return str.toInt()
 } catch(e: NumberFormatException) {
 return null
 }
}

// 上面的方法可以寫作表達式體函數
fun transform(str: String) = try {
  str.toInt()
 } catch(e: NumberFormatException) {
  null
 }

以上是“Kotlin中循環和異常的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐陵市| 宁武县| 浦城县| 澄城县| 马尔康县| 淳化县| 永胜县| 厦门市| 元氏县| 浦北县| 自治县| 汤阴县| 新巴尔虎右旗| 弥渡县| 保定市| 东台市| 东山县| 仙桃市| 吉安市| 连江县| 乌海市| 达拉特旗| 凌海市| 克拉玛依市| 襄垣县| 永春县| 台东县| 自贡市| 栾城县| 会东县| 常山县| 曲水县| 绥化市| 古丈县| 宽甸| 上饶县| 志丹县| 抚顺县| 资中县| 龙泉市| 松溪县|