Problema de Kotlin:
- Cree una matriz entera de números llamados números , del 11 al 15.
- Cree una lista mutable vacía para cadenas.
- Escriba un ciclo for que recorra la matriz y agregue la representación de cadena de cada número a la lista.
He probado lo siguiente:
import java.util.* var numbers = intArrayOf(11,12,13,14,15) var myList = mutableListOf<String>() for (element in numbers) { myList.add(Arrays.toString(element)) }
Pero me da error:
error: none of the following functions can be called with the arguments supplied: public open fun toString(p0: Array<(out) Any!>!): String! defined in java.util.Arrays public open fun toString(p0: BooleanArray!): String! defined in java.util.Arrays public open fun toString(p0: ByteArray!): String! defined in java.util.Arrays public open fun toString(p0: CharArray!): String! defined in java.util.Arrays public open fun toString(p0: DoubleArray!): String! defined in java.util.Arrays public open fun toString(p0: FloatArray!): String! defined in java.util.Arrays public open fun toString(p0: IntArray!): String! defined in java.util.Arrays public open fun toString(p0: LongArray!): String! defined in java.util.Arrays public open fun toString(p0: ShortArray!): String! defined in java.util.Arrays myList.add(Arrays.toString(element)) ^
Más tarde resolví el problema con
myList.add(Arrays.toString(numbers))
¿Por qué el primer código no funcionó?
Arrays.toString()
es para convertir una matriz completa de datos en una sola cadena, por lo que no es la herramienta adecuada para su tarea de todos modos. (Si iba a hacer esto, en Kotlin, debería preferirse llamar a joinToString()
en el Array en lugar de usar la clase de utilidad Arrays
de Java).
Desea convertir cada Int
individual en una String
de uno en uno, por lo que debe usar:
myList.add(element.toString())
Su primer método no funciona porque Arrays.toString
toma una matriz y la convierte en una cadena, como puede ver en todas las sobrecargas enumeradas en el mensaje de error. El element
no es una matriz, es un elemento de la matriz de numbers
, es decir, un Int
. Por lo tanto, su primera forma no funciona.
Tenga en cuenta que su segunda forma agrega la cadena única "[11, 12, 13, 14, 15]"
, en lugar de las 5 cadenas "11"
, "12"
, "13"
, "14"
, "15"
a la lista . Si desea agregar esas 5 cadenas, debe llamar a toString
en el element
:
for (element in numbers) { myList.add(element.toString()) }
Además, no se recomienda utilizar el método Java Arrays.toString
. Si desea generar la cadena "[11, 12, 13, 14, 15]"
, use en su lugar numbers.contentToString()
.