Разделить на Размер массива в Kotlin, но я получаю ноль, даже размер массива равен 1 или более - PullRequest
0 голосов
/ 19 апреля 2020
    fun plusMinus(arr: Array<Int>): Unit {
    var counterPositive = 0
    var counterNegative = 0
    var counterZero = 0
    for(i in 0 until arr.size) {
        if(arr[i] > 0) {
            counterPositive++
        } else if(arr[i] < 0) {
            counterNegative++
        } else {
            counterZero++
        }
    }

    println(counterPositive)
    println(arr.size)
    val a = counterPositive/arr.size
    println(a)
}

Я пытаюсь решить вопрос простого алгоритма, но сталкиваюсь с этой интересной вещью. Итак, я пытаюсь найти положительные, отрицательные числа и нули в массиве. И каждый делит на размер массива. И распечатать его, но я получаю 0 в результате. Но когда я отлаживаю код, я вижу, что counterPositive, например, 4, а arr.size, например, 5, но я получаю 0. Почему?

1 Ответ

3 голосов
/ 19 апреля 2020

Вы получаете ноль, поскольку counterPositive, counterNegative и counterZero инициализируются с 0, поэтому тип Int выводится.

Поскольку размер массива равен Int, деление между двумя Int приводит к Int.

. Чтобы исправить это, вам нужно использовать Float или Double.

val a = counterPositive.toFloat() / arr.size
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...