Orestis Tsanakas Ответов: 2

Может ли кто - нибудь объяснить мне результат этого кода?


fun main(args: Array<String>) {
    var x=0
    var y=20
    for(outer in 1..3){
        for(inner in 4 downTo 2){
            x+=6
            y++
            x+=3
        }
        y-=2
    }
    println("$x $y")

}


Что я уже пробовал:

я хочу понять почему результат 81 23

спасибо
и с наилучшими пожеланиями

Gerry Schmitz

Вы выполняете свой внутренний цикл 9 раз. 9 x 9 = 81 (x).

2 Ответов

Рейтинг:
4

Patrice T

Цитата:
я хочу понять почему результат 81 23

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

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Рейтинг:
12

F-ES Sitecore

Пройдите его на бумаге или построчно в отладчике

var x=0


Итак, x-это 0

for(outer in 1..3)


все в этом for будет петлять с внешним бытием 1, затем 2, затем 3. Так за первый проход наружный 1;

x = 0
наружный = 1

for(inner in 4 downTo 2)


это будет петля с внутренним существом 4, 3, 2

x = 0
наружный = 1
внутренний = 4

x+=6


x = x + 6, так как x был 0, то теперь он равен шести

x = 6
наружный = 1
внутренний = 4

x+=3


То же самое, так что теперь x-это 9

x = 9
наружный = 1
внутренний = 4

Вот и закончился "внутренний" цикл, так что он снова работает, только теперь внутренний равен 3

x = 9
наружный = 1
внутренний = 3

x+=6


x = 15
наружный = 1
внутренний = 3

x+=3


x = 18
наружный = 1
внутренний = 3

и так далее. Следуйте математике, и вы увидите, почему вы получаете результаты, которые вы делаете.


Orestis Tsanakas

хорошо извините, чтобы понять удовольствие Под в 1..3 Сколько раз он будет работать? 3 Правильно??? но чтобы сделать его 81 у нас есть x :0 9 18 27 36 45 64 73 81 так это 9 раз почему ? а как насчет y сколько раз? и первый прогон будет 20 +1= 21 - 2= 19... ?

F-ES Sitecore

Есть две петли, внутренняя петля будет петлей 3 раза, однако внешняя петля будет петлей внутренней петли 3 раза, так что в общей сложности 9 петель.