Хотя l oop с двойным условным и || логический оператор в Swift - PullRequest
0 голосов
/ 05 мая 2020

У меня есть While L oop с условием, которое ограничивает его повторение только 10 раз, каждый раз, когда цикл повторяется, константа D генерирует случайное число в диапазоне от 0 до 24, если D равно 0, я меняю переменную dIsZero на true и впервые распечатываю цикл, где D равно 0.

var S = 0  
var dIsZero = false

while S < 10 || dIsZero == false {
    S += 1
    let D = Int.random(in: 0...24)
    if dIsZero == false && D == 0 {
        dIsZero = true
        print("D = 0 in a cycle \(S)/10")
    }
}

Моя проблема в том, что я хочу, чтобы время L oop также могло заканчиваться, когда D равно 0, до завершения 10 циклов. Я уже пробовал ввести логический оператор ||, но он не работает, и я получаю следующие результаты:

  • 10 циклов превышены, пока D не станет 0. Например: 84 цикла.

  • Если D равно 0 перед 10 циклами, l oop не останавливается, пока не будут достигнуты 10 циклов
    .

Я читал о логических операторах и обнаружил следующее:

Логические операторы Swift && и || левоассоциативны, что означает, что составные выражения с несколькими логические операторы сначала оценивают крайнее левое подвыражение.

Какое решение вы порекомендуете?

1 Ответ

3 голосов
/ 05 мая 2020

Нужно просто сломать л oop

while S < 10  {
    S += 1
    let D = Int.random(in: 0...24)
     if D == 0 {
       print("D = 0 in a cycle \(S)/10")
        break
     }
}
...