2016-01-27 16 views
-1

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

+0

Так что вы хотите [сравнивать строки] (http://www.mathworks.com/help/matlab/string-comparison.html) к одному ['or'] (http://www.mathworks.com/help/matlab/ref/or.html) другой и остаться в цикле [' while'] (http://www.mathworks.com/help/ matlab/ref/while.html), пока сравнение не будет истинным? – excaza

ответ

1

Попробуйте это:

while 1 
    b = input('Is today your birthday? ','s'); 
    if any(strcmpi(b,{'yes','no'})) 
     break 
    end 
end 
+0

Отлично! Спасибо! – user3282005

+0

Правильный способ указать, что ответ прекрасен, это принять его, а не оставлять комментарий. –

0

Вот путь (есть много других):

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

Чтобы сравнить сразу несколько строк, вы можете использовать strcmp с ответом, предоставленным пользователем, и использовать массив ячеек, содержащий строки, которые вы ищете (т. Е. Да/нет/и т. Д.). Если ответ соответствует любой из строк, массив (называемый CheckAns) содержит 1, и сумма отличается от 0; в противном случае сумма равна 0, поэтому цикл продолжается. Это очень много слов, так вот код:

%// Initialize the look up array. All 0 to start and enter the loop 
CheckAns = [0 0 0 0]; 

while ~sum(CheckAns) 

    Ans = inputdlg('Is this your birthday?'); 

    CheckAns = strcmpi(Ans,{'yes';'no'}); 

    if strcmpi(Ans,'yes') 
     disp('Happy birthday') 

    elseif strcmpi(Ans,'no') 

     disp('Haha loser') 

    end 

end 
Смежные вопросы