Kotlin - Как мне объединить строку в значение Int? - PullRequest
0 голосов
/ 31 мая 2019

Очень простой вопрос: каков правильный подход для объединения String с Int?

Я новичок в Kotlin и хочу напечатать значение Integer с предшествующим String и получить следующее сообщение об ошибке.

for (i in 15 downTo 10){
  print(i + " "); //error: None of the following function can be called with the argument supplied:
  print(i); //It's Working but I need some space after the integer value.
}

Ожидаемый результат
15 14 13 12 11 10

Ответы [ 7 ]

2 голосов
/ 31 мая 2019

У вас есть несколько вариантов:

1.Строковые шаблоны .Я думаю, что это самый лучший.Он работает абсолютно как 2-е решение, но выглядит лучше и позволяет добавлять некоторые необходимые символы.

print("$i")

и, если вы хотите добавить что-то

print("$i ")
print("$i - is good")

, добавить место выраженияэто в скобках

print("${i + 1} - is better")

2.toString метод , который можно использовать для любого объекта в котлине.

print(i.toString())

3.Java-подобное решение с объединением

print("" + i)
2 голосов
/ 31 мая 2019

$ доллар - символ доллара используется в шаблонах строк, которые мы увидим в следующем

for (i in 15 downTo 10){   
  print("$i ")
}

Вывод: 15 14 13 12 11 10

1 голос
/ 31 мая 2019

Вы получаете ошибку, потому что +, который вы используете, является целочисленным (это определяется левым операндом). Целое число + ожидает 2 целых числа. Чтобы реально использовать + String для конкатенации, вам понадобится строка слева, например, "" + i + " ".

При этом в Kotlin более идиоматично печатать отформатированные строки, используя строковые шаблоны : "$i "

Однако, если вам нужно вывести целые числа с пробелами между ними, вы можете использовать функцию stdlib joinToString():

val output = (15 downTo 10).joinToString(" ")
print(output) // or println() if you want to start a new line after your integers
1 голос
/ 31 мая 2019

Метод Int::toString делает то, что вы ищете.Вместо явных циклов рассмотрим функциональные подходы, такие как map:

(15 downTo 10).map(Int::toString).joinToString { " " }

. Обратите внимание, что часть map даже избыточна, поскольку joinToString может обрабатывать преобразование внутри.

0 голосов
/ 31 мая 2019

Вы должны использовать $. Вы также можете использовать +, но это может привести к путанице в вашем случае, поскольку + имеет также оператор, который вызывает метод plus(), который используется для суммирования целых чисел.

for (i in 15 downTo 10){
  print("$i ");
}
0 голосов
/ 31 мая 2019

Для этого вы можете использовать шаблон строки kotlin:

for (i in 15 downTo 10){
  print("$i ");
}

https://kotlinlang.org/docs/reference/basic-types.html#string-templates

0 голосов
/ 31 мая 2019

Просто приведите к String:

for (i in 15 downTo 10){
  print(i.toString() + " ");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...