Не делайте ваши значения обнуляемыми. Это редко необходимо, чтобы иметь нулевые примитивные свойства. Ошибка, которую вы получаете, заключается в том, что вы пытаетесь использовать значения, которые могут быть нулевыми.
Создайте их как экземпляр.
var value1: Float = 0f
var value2: Float = 0f
И в вашем * Функция 1008 *, установите их обратно на 0f
, а не null
.
Если вам действительно нужно оставить их пустыми, вы можете сделать что-то вроде этого, добавив их только после проверки того, что они оба не NULL, а затем показать сообщение об ошибке, если любое из значений равно NULL:
if (suma) {
val s = value1?.let { value2?.plus(it) }
expression.text = s?.toString() ?: "Invalid input value(s)"
}
//...
Изменить в ответ на ваш комментарий:
Типичный калькулятор просто сбрасывает оператор, когда Вы нажимаете = перед чем-либо еще, поэтому я переписал бы слушатель равной кнопки следующим образом (с оператором when для простоты). Я удаляю свойство value2
member, потому что оно не нужно, и вместо этого использую локальное свойство.
equal.setOnClickListener {
val value2 = expression.text.toString().toFloatOrNull()
if (value2 != null) {
val result = when {
suma -> value1 + value2
resta -> value1 - value2
div -> value1 / value2
multi -> value1 * value2
else -> value1 // Shouldn't happen but can default to not changing number
}
expression.text = result.toString()
}
// reset for next operation
suma = false
resta = false
div = false
multi = false
}