gpt4 book ai didi

android - 为什么我的数组中的某些元素丢失了? ( Kotlin )

转载 作者:行者123 更新时间:2023-11-29 22:51:51 24 4
gpt4 key购买 nike

我不明白为什么有些元素会丢失。我的假设是我以某种方式声明了我的变量错误。但如果不是,我看不出代码的概念化有什么问题。

我试图在函数的开头创建一个数组,该数组在结尾处应该是相同的,但元素仍然缺失。

(示例:

val savedArray = nameArray

[一些没有修改两个数组的代码]

nameArray = savedArray)


import android.support.v7.app.AppCompatActivity 

import android.os.Bundle

import android.util.Log

var nameArray = arrayListOf("Julia", "Maxime", "Thomas", "Dean", "Samuel")

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

Log.i("Before", "$nameArray") // ["Julia", "Maxime", "Thomas", "Dean", "Samuel"]

val randomArray = choosePlayer()

Log.i("After", "$nameArray") // [Maxime, Dean, Samuel] Where are Thomas and Julia ?

}


fun choosePlayer(): ArrayList<String> {
val endArray = arrayListOf<String>()
var editArray = nameArray

val name1 = editArray.random()

endArray.add(name1)
editArray.remove(name1)

val name2 = editArray.random()

endArray.add(name2)
editArray.remove(name2)


Log.i("return value", "$endArray") // [Thomas, Julia]
return endArray
}
}

我希望 nameArray 是完整的,但总是缺少两个元素。我注意到一旦从 editArray 中删除它们,它们就消失了。

最佳答案

I expect the nameArray to be full but instead two elements are always missing.

因为endArray 和editArray 是同一个对象。这里

val endArray = arrayListOf<String>()
var editArray = nameArray

editArrayendArray 是同一个引用。只需创建一个新的

val endArray = arrayListOf<String>()
var editArray = arrayListOf<String>()

关于android - 为什么我的数组中的某些元素丢失了? ( Kotlin ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com