Проблема с примечаниями, большими или равными 7 и меньшими в kotlin с использованием элемента управления потоком (Пока) - PullRequest
0 голосов
/ 26 апреля 2020

как мне ввести 4 ноты и сообщить мне, сколько нот имеет больше или равно 7, а сколько меньше kotlin На моем виртуальном устройстве введите 3 ноты больше 7 и одну меньше 7, и результат будет не правильно

это мой код:

            val num1 = ed_valor1.text.toString().toInt()
            val num2 = ed_valor2.text.toString().toInt()
            val num3 = ed_valor3.text.toString().toInt()
            val num4 = ed_valor4.text.toString().toInt()

            var x = 1
            var y = 0
            var z = 0

            while (x <= 4) {

                if (num1 >= 7 || num2 >= 7 || num3 >= 7 || num4 >= 7) {

                    y += 1

                } else {

                    z += 1
                }

                x++

                tv_texto.text = ("los numeros mayores que 7 son $y los menores son $z  ")


            }

Ответы [ 3 ]

0 голосов
/ 26 апреля 2020

Это то, что я собираюсь сделать

  1. Создание функций высшего порядка вне любого класса, чтобы вы могли использовать их везде
fun EditText.isIntValue():Int? = this.text.toString().toIntOrNull()
Создать функцию для получения всего EditText, который вы хотите проверить
fun findGreaterOrEqualThen (value : Int, editTextList : MutableSet<EditText>){
        var totalGreaterOrEqual = 0
        var totalLessThenValue = 0
        fun checkNumber(number : Int) { when {number >= value -> totalGreaterOrEqual++ else -> totalLessThenValue++ } }
        editTextList.forEach {editText -> editText.isIntValue()?.let { checkNumber(it) } }
        tv_texto.text = ("los numeros mayores que $value son $totalGreaterOrEqual los menores son $totalLessThenValue  ")
    }
при нажатии кнопки
yourButton.setOnClickListener {
     findGreaterOrEqualThen(7,
        mutableSetOf(
            ed_valor1,
            ed_valor2,
            ed_valor3,
            ed_valor4)
    )
}

ПРИМЕЧАНИЕ ****

Старайтесь не использовать .toInt() Поскольку вы можете получить ошибка, если эта строка не может быть приведена к Int

Что означает .toIntOrNull ()?

Это означает, что она вернет Int, если она может привести в противном случае вернуть ноль

Что такое .let {}

Я приведу вам пример

"15" .toIntOrNull () ?. let {}

это означает, что он будет пытаться разыграть "15" в Interger, поскольку вы можете видеть, что этот приём будет работать, потому что 15 - это число

what is ? after .toIntOrNull()

, это означает, что он проверяет, какой тип возврата .toIntOrNull () в этом примере мы возвращаем Interger 15

, поэтому, если он вернет Inter Value, он будет go при выполнении внутри? .let {}, но если это что-то вроде "Fifteen".toIntOrNull(), это вернет null, поэтому, когда он равен NULL, он будет пропущен? .let {} function

Пример

editText.isIntValue()?.let {checkNumber(it) }

равно

if(editText.isIntValue() != null){ checkNumber(editText.isIntValue()) }
0 голосов
/ 26 апреля 2020

если вы хотите сделать это по-своему, я бы сделал это так

        val num1 = ed_valor1.text.toString().toInt()
        val num2 = ed_valor2.text.toString().toInt()
        val num3 = ed_valor3.text.toString().toInt()
        val num4 = ed_valor4.text.toString().toInt()

        val editTextList = mutableListOf(num1,num2,num3,num4)

        var x = 0
        var y = 0
        var z = 0

        while (x < editTextList.count()) {
            if(editTextList[x] >= 7) y++ else z++
            x++
        }
        tv_texto.text = ("los numeros mayores que 7 son $y los menores son $z  ")
0 голосов
/ 26 апреля 2020

Всего у вас всего 4 заметки. Попробуйте следующий код:

var notesGreaterThan7 = 0
var totalNotes = 4
if (num1 > 7) {
    notesGreaterThan7 +=1
}
if (num2 > 7) {
    notesGreaterThan7 +=1
}
if (num3 > 7) {
    notesGreaterThan7 +=1
}
if (num4 > 7) {
    notesGreaterThan7 +=1
}
var notesLessThan7 = totalNotes - notesGreaterThan7
tv_texto.text = ("los numeros mayores que 7 son $notesGreaterThan7 los menores son $notesLessThan7  ")
...