如何在Kotline中初始化和使用charArray

时间:2019-04-29 12:49:39

标签: kotlin

我有这个代码

 var str : CharArray


var t =0
for (k in i..i+3) {
    str[t++] = array[k][j]

它说str必须被初始化,我不知道如何初始化。

我试图这样初始化,但是它说类型不匹配,

var array: Array<CharArray> = arrayOf("India");

类型推断失败。预期的类型不匹配: 需要: 数组 发现: 数组

5 个答案:

答案 0 :(得分:1)

您可以通过以下方式初始化它:

var str : CharArray = CharArray(3) //if you know size
var str : CharArray = charArrayOf() //creates empty array
var str : CharArray? = null //makes your array nullable

或者您可以使用lateinit稍后进行初始化

答案 1 :(得分:0)

如果将CharArray声明为它,则必须立即对其进行初始化。否则,您可以指定稍后使用属性lateinit对其进行初始化,或者可以将变量声明为CharArray并将其设置为null,或者可以使用

var str : CharArray? = null
var lateinit str: CharArray

答案 2 :(得分:0)

您已声明类型为CharArray的变量,但尚未为其分配任何实例。

在设置该CharArray的元素之前,必须创建CharArray的实例。看来您已经知道该数组的大小,然后可以使用以下数组构造函数:

// creates an instance of CharArray of 4 elements, filled with \u0000 chars
val str = CharArray(4)  

// after that you can set elements in the array

要点:如果您有一个函数可以提供给定索引的数组元素值,则可以使用类似的构造函数来立即创建实例并初始化其元素:

val str = CharArray(4) { index -> 
    array[i + index][j]
}

答案 3 :(得分:0)

在 Kotlin 中有很多方法可以初始化数组。如果所有值都相同(这里我使用空格),最简单的方法是:

var chars = CharArray(26) { ' ' }

如果您有一组特定的字符(这里我将其设为常量),我发现这是一种简单的方法:

val CHARS = "abcdefghijklmnopqrstuvwxyz".toCharArray()

如果你想将一个复制到另一个(克隆),你可以这样做:

val array2 = CharArray(array.size) { i -> array[i] }

在你上面给出的例子中,你试图初始化一个 CharArray 数组。不确定这是否是您真正想要的,但您可以这样做(我有一个包含 25 个项目的数组,每个项目都是一个包含 5 个空格的数组):

var array2D = Array<CharArray>(25) { CharArray(5) { ' ' } } 

答案 4 :(得分:0)

它说 str 必须被初始化。问题是您没有完全定义要创建的 char 数组的结构。 CharArray 需要知道您正在创建的数组的实际长度或大小。因此,在本说明中,您需要在尝试填充之前对其进行初始化。我的代码片段已关闭 .....您的代码仍有一些问题。

xgb_predict(train, test[0, :-1])

output::: 1 到 30 之间的值将存储在 str 字符数组中