我們用java進行Android開發過程中,經常會用到for循環,在Kotlin中也會經常用到,但是在最近使用Kotlin中我發現,在java中使用for循環不會有什么問題,但是在Kotlin中會出現問題,就是循環出出來的結果不一樣,到目前還未找到合適的解決方法,希望通過記錄這個問題,以便以后遇到類似問題能夠方便查找。下面具體具體說明一下:
在JAVA中的使用:
List<Double> pos = new ArrayList<>();for (int k1 = 0; k1 < poslists.size() - 1; k1 = k1 + 2) {String a1 = poslists.get(k1);String a2 = poslists.get(k1 + 1);int b1 = Integer.parseInt(a1.substring(0, a1.lastIndexOf('_')));int b2 = Integer.parseInt(a2.substring(0, a2.lastIndexOf('_')));for (int i = b1; i < b2; i++) {pos.add(Double.parseDouble(a1.substring(a1.lastIndexOf('_') + 1)));}}
其中:poslists是一個List<String> 其中添加的數據類型是0_5,332_7等等,pos獲取的是5,7等等,在Java中就完全沒問題,但是在kotlin中獲取的數據就會出現少數據(主要體現在:每次變換體位,比如5-7就會多出來一個值)
下面是Kotlin中對應的這段代碼:
var k1 = 0 while (k1 < poslists.size - 1) {val a1: String = poslists.get(k1)val a2: String = poslists.get(k1 + 1)val b1 = a1.substring(0, a1.lastIndexOf('_')).toInt()val b2 = a2.substring(0, a2.lastIndexOf('_')).toInt()for (i in b1 until b2) {pos.add(a1.substring(a1.lastIndexOf('_') + 1).toDouble())}k1 = k1 + 2 }
希望有知道的網友能夠幫忙看一下。