Ошибка: Kotlin: литерал с плавающей точкой не соответствует ожидаемому типу Float - PullRequest
0 голосов
/ 23 июня 2019

Я делал простой математический калькулятор в kotlin, на моем экране появилась ошибка, когда я попытался инициализировать значение одной из переменных, используемых как 0,00 для целого числа с плавающей запятой.

var x:Float= readLine()!!.toFloat()
var y:Float= readLine()!!.toFloat()
var sum:Float=0.00// the error message is showcased in this line
sum=x+y
println("Addition " + sum)

1 Ответ

1 голос
/ 23 июня 2019

Это ключевое различие между Java и Kotlin.Kotlin не продвигает числовые типы, как Java.В комментариях к вашему вопросу показано, как с этим справиться, либо сопоставив два типа Double и / или Float для начала, либо явным образом преобразовав один или другой, чтобы оба типа совпали.

Ваши проблемы исчезнут, если вы воспользуетесь способностью Котлина выводить типы переменных, исключая спецификации типов из определений переменных.Тот факт, что Котлин выводит типы, является одной из причин, по которой он не продвигает числовые типы.Смешивание этих двух элементов может привести к путанице.

Вот пример того, как исправить и упростить проблемы несоответствия типов вашего кода с помощью вывода типа:

var x = readLine()!!.toFloat()
var y = readLine()!!.toFloat()
var sum = x + y
println("Addition " + sum)

Я понимаю, что это может бытьпросто протестируйте код, который вы используете, чтобы лучше понять Kotlin.С учетом сказанного, я укажу, что этот код потерпит крах, если ваш пользователь введет нечисловой ввод.Вы можете исправить это, поместив try / catch вокруг ваших строк ввода и предоставив приятное сообщение об ошибке.Возможно, вы захотите поместить каждый ввод в цикл, продолжая запрашивать ввод, пока пользователь не предоставит ответ в ожидаемом формате.

...