【问题标题】:How to initialize and use charArray in Kotlin如何在 Kotlin 中初始化和使用 charArray
【发布时间】:2019-04-29 12:49:39
【问题描述】:

我有这个代码

 var str : CharArray


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

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

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

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

类型推断失败。预期类型不匹配: 必需的: 大批 成立: 数组

【问题讨论】:

    标签: kotlin


    【解决方案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 稍后进行初始化

    【讨论】:

    • 用户输入后会知道大小,
    • 所以,我建议使用charArrayOf()。在用户输入后,您可以将此字段设置为具有已知大小的新CharArray
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您已经声明了一个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]
      }
      

      【讨论】:

        【解决方案4】:

        在 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) { ' ' } } 
        

        【讨论】:

          【解决方案5】:

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

          var str : CharArray = CharArray(9)
          
          
          var t = 0
          for (k in 1..9) {
              str[t] = k
          }
          
          

          输出::: 1 到 30 的值将存储在 str 字符数组中

          【讨论】:

            猜你喜欢
            • 2016-08-22
            • 2021-07-08
            • 2016-09-27
            • 1970-01-01
            • 2021-07-02
            • 2020-04-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多