Back Space Причины Cra sh в Калькуляторе - PullRequest
0 голосов
/ 17 февраля 2020

Когда я нажимаю кнопку «Пробел», когда нет ввода, приложение калькулятора Android падает. Этот код написан на Kotlin, а в среде IDE - Android Studio, а BackSpace помечен как tvBack в MainActivity.kt в приведенном ниже коде.

Что я должен сделать, чтобы обработать этот код sh?

 //BACK
        tvBack.setOnClickListener{
            val string =tvResult.text.toString()
            val string2=tvExpression.text.toString()
            if(string.isEmpty()){
                tvExpression.text = string2.substring(0,string2.length-1)

            }else if(string2.isNotEmpty()){

                tvResult.text=""
            }else if(string2.isEmpty()){
                return@setOnClickListener
            }

1 Ответ

0 голосов
/ 17 февраля 2020

Проблема в этой строке:

tvExpression.text = string2.substring(0,string2.length-1)

Если ваша строка2 пуста, string2.length равен 0, поэтому эта строка оценивается как

tvExpression.text = string2.substring(0,-1)

Так что это недопустимая подстрока.

Итак, перед генерацией подстроки вы должны сначала проверить, не является ли строка пустой. Вы можете сделать это, добавив следующую строку после tvBack.setOnClickListener{:

if (string2.length == 0) return;

// РЕДАКТИРОВАТЬ: Пожалуйста, измените ваш код следующим образом:

    tvBack.setOnClickListener{
        val string =tvResult.text.toString()
        val string2=tvExpression.text.toString()
        if(string2.isNotEmpty()){
            tvExpression.text = string2.substring(0,string2.length-1)
            tvResult.text=""
        }

Проблема для вашей новой ошибки было то, что вы сделали свои чеки неправильно. Вы хотите генерировать и использовать подстроку, только если строка не пуста. Ваш код сделал наоборот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...