J'ai ce code
var array: Array<CharArray> = arrayOf("India");
et il dit que str doit être initialisé, je ne sais pas comment initialiser.
J'ai essayé d'initialiser comme ça, mais cela indique une incompatibilité de type,
var str : CharArray var t =0 for (k in i..i+3) { str[t++] = array[k][j]
L'inférence de type a échoué. Non-correspondance de type attendue: obligatoire: tableau trouvé: tableau
3 Réponses :
Si vous déclarez votre CharArray comme tel, vous devez l'initialiser immédiatement. Sinon, vous pouvez spécifier que vous l'initialiserez plus tard avec la propriété lateinit , ou vous pouvez déclarer votre variable en tant que CharArray et la définir sur null, ou vous pouvez utiliser un
var str : CharArray? = null var lateinit str: CharArray
Vous pouvez l'initialiser de cette façon:
var str : CharArray = CharArray(3) //if you know size var str : CharArray = charArrayOf() //creates empty array var str : CharArray? = null //makes your array nullable
Ou vous pouvez utiliser lateinit
pour une initialisation plus tard
la taille sera connue après la saisie de l'utilisateur,
Donc, j'ai recommandé d'utiliser charArrayOf()
. Et après l'entrée de l'utilisateur, vous pouvez définir ce champ sur un nouveau CharArray
avec une taille connue
Vous avez déclaré une variable de type CharArray
, mais ne l'avez affectée à aucune instance.
Avant de pouvoir définir des éléments de ce CharArray
, vous devez créer une instance de CharArray
. Il semble que vous connaissiez la taille de ce tableau à l'avance, vous pouvez alors utiliser le constructeur de tableau suivant:
val str = CharArray(4) { index -> array[i + index][j] }
Point bonus: si vous avez une fonction qui peut fournir une valeur d'élément de tableau compte tenu de son index, vous pouvez utiliser le constructeur similaire pour créer une instance et initialiser ses éléments à la fois:
// 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