C for несколько условий

В C# имеются четыре различных вида циклов (for, while, do. while и foreach), позволяющие выполнять блок кода повторно до тех пор, пока удовлетворяется определенное условие. В этой статье мы познакомимся с циклами for и while.

Цикл for

Цикл for в C# предоставляет механизм итерации, в котором определенное условие проверяется перед выполнением каждой итерации. Синтаксис этого оператора показан ниже:

инициализатор

это выражение, вычисляемое перед первым выполнением тела цикла (обычно инициализация локальной переменной в качестве счетчика цикла). Инициализация, как правило, представлена оператором присваивания, задающим первоначальное значение переменной, которая выполняет роль счетчика и управляет циклом;

условие

это выражение, проверяемое перед каждой новой итерацией цикла (должно возвращать true, чтобы была выполнена следующая итерация);

итератор

выражение, вычисляемое после каждой итерации (обычно приращение значения счетчика цикла).

Обратите внимание на то, что эти три основные части оператора цикла for должны быть разделены точкой с запятой. Выполнение цикла for будет продолжаться до тех пор, пока проверка условия дает истинный результат. Как только эта проверка даст ложный результат, цикл завершится, а выполнение программы будет продолжено с оператора, следующего после цикла for.

Стоит отметить, что цикл for отлично подходит для повторного выполнения оператора или блока операторов заранее известное количество раз. Давайте рассмотрим практическое применение цикла for на следующем примере:

Я использую цикл while и хочу, чтобы пользователь ввел r, R, p или P. Но когда я добавляю более одного условия, например:

моя программа навсегда застрянет в цикле. Где, как будто я ввожу это так:

Читайте также:  Windows для сборщиков пк

Тогда мой код выйдет из цикла for, если пользователь введет «r». Так почему же первый блок кода не работает? У меня нет ошибок, это означает, что это должна быть логическая ошибка, но я не понимаю. Как я могу получить больше условий в цикле for и заставить его работать?

Решение

Вам нужно использовать && вместо || потому что с помощью || состояние в while всегда true , Когда вы пишете «г», например, условие userinput != r ложно, но остальные верны, с && все выражения превращаются в false и while заканчивается.

Другие решения

Why does the above condition not work?

Причина в том, что если вы скажете x is not 3 or x is not 5 тогда, если x является 3 , затем x не является 5 Таким образом, все утверждение оценивается как истинное. Ваш отличается userInput != ‘r’ а также userInput != ‘p’ так же, как эта ситуация с x ,

Чтобы показать это проще, я покажу таблицу истинности для or , Когда выражение оценивается как true, ваш цикл while будет продолжаться ниже тех обстоятельств, когда p а также q утверждения, которые могут быть истинными или ложными, как userInput != ‘r’ ,

Это означает, что с or пункт, единственный способ, которым это ложно, если все части являются ложными.

And Похоже, что это то, что вы хотите. Это правда таблицы:

Смысл, что с and условие, единственный способ для него быть истинным, если все предложения являются истинными.

Поэтому, если вы хотите, чтобы ответ не был ни r, ни p, ни R, ни P и т. Д., Используйте && для и:

И тогда цикл while завершится, как только userInput не соответствует ни одному из r , p , R или же P , Это потому, что, как программа оценивает, она проверяет:

Читайте также:  Как взломать вай фай через айфон

С примером userInput как «g»:

Вводит ли пользователь g равный r ? Нет. Итак, первое предложение верно. Вводит ли пользователь g равный p ? Нет. Итак, второе предложение верно. Вводит ли пользователь g равный R ? Нет. Таким образом, третье предложение верно. Вводит ли пользователь g равный P ? Нет. Таким образом, четвертое предложение верно. Поскольку все четыре имеют значение true, тогда все утверждение верно, и цикл while продолжается.

С примером userInput как «R»:

Вводит ли пользователь g равный R ? Нет. Итак, первое предложение верно. Вводит ли пользователь g равный R ? Нет. Итак, второе предложение верно. Вводит ли пользователь g равный R ? ДА. Таким образом, третий пункт является ложным. Так как часть выражения ложна, то целое и предложение ложно, поэтому цикл while завершается.

но мне надо чтобы он построчно отображал сперва от 0 до 6 и потом от 6 до 10 я знаю что можно написать

но мне такой вариант не годится так как вместо && должно быть слово and, один цикл а выполняет И от ..до.. И от..до

Закрыт по причине того, что непонятна суть вопроса участниками Grundy, Kyubey, user194374, aleksandr barakin, cheops 11 июл ’16 в 4:53 .

Постарайтесь писать более развёрнутые вопросы. Для получения ответа поясните, в чём именно вы видите проблему, как её воспроизвести, что вы хотите получить в результате и т. д. Приведите пример, наглядно демонстрирующий проблему. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector