重复for循环后,第二个数组将不会增加

时间:2019-03-16 03:20:23

标签: arrays for-loop if-statement kotlin

我是Kotlin的新手,并且正在尝试通过比较哪个数组具有更大的元素来比较两个数组的元素。数组是通过用户输入创建的。我遇到的错误是,当我重复包含第二个数组内容的第二个for循环(内部循环)时,与第一个for循环不同,它不会递增到第二个数组的下一个元素。因此,如果a = {1,2}b = {2,1}a将在1和2处递增,但是b在循环的两次迭代中都将保持为2。这是给我一个问题的函数:

    fun practiceCompareArray(a: Array<Int>, b: Array<Int>): Array<Int> {
        var j: Array<Int>
        var aPoints = 0
        var bPoints = 0

        for (x:Int in a) {
--------->  for (y: Int in b) {
                if (x > y) {
                    aPoints++
                } else if (x < y) {
                    bPoints++
               break
            }
        }

        j = arrayOf(aPoints, bPoints)

        return j
    }

带有箭头的for循环给了我这个问题。我认为这是因为在内循环末尾的break语句。我什至需要内部循环来比较每个数组吗?任何帮助或文档都将有所帮助。

1 个答案:

答案 0 :(得分:1)

如果您知道两个数组的长度都相同,并且想按元素进行比较,则可以执行以下操作:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-storage:16.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

或更实用的风格

fun practiceCompareArray(a: Array<Int>, b: Array<Int>): Array<Int> {
    var aPoints = 0
    var bPoints = 0

    for ((x,y) in a.zip(b)) {
        if (x>y) {
            aPoints ++
        } else {
            bPoints ++
        }
    }
    return arrayOf(aPoints, bPoints)
}