Hi, I am asking the user for input and the input should be either "AA" "Aa" or "aa". How can I validate the input using a while loop? I don't think my code works.Thanks!

1 回表示 (過去 30 日間)
parentOneA = input("Enter Parent 1's A Trait: ")
% Error checking input
while parentOneA ~= "AA" || parentOneA ~= "Aa" || parentOneA ~= "aa";
parentOneA = input("Enter Parent 1's A Trait: ")
end
  2 件のコメント
Stephen23
Stephen23 2020 年 9 月 24 日
編集済み: Stephen23 2020 年 9 月 24 日
There is no string for which this will return false:
parentOneA ~= "AA" || parentOneA ~= "Aa" || parentOneA ~= "aa";
At least two equality operators will return true, so the output will always be true because you used OR:
true || false || true -> true
Rather than writing them out individually, a better approach is to simply use strcmpi:
while ~strcmpi(parentOneA,'AA')
Sindar
Sindar 2020 年 9 月 24 日
^ unless 'aA' is an invalid option

サインインしてコメントする。

回答 (1 件)

Sindar
Sindar 2020 年 9 月 24 日
You're requiring that it be all valid entries simultaneously
parentOneA = input("Enter Parent 1's A Trait: ")
% Error checking input
while parentOneA ~= "AA" && parentOneA ~= "Aa" && parentOneA ~= "aa";
parentOneA = input("Enter Parent 1's A Trait: ")
end
or
valid_inputs = {'AA';'Aa';'aa'};
parentOneA = input("Enter Parent 1's A Trait: ")
while ~any(strcmp(parentOneA,valid_inputs))
parentOneA = input("Enter Parent 1's A Trait: ")
end

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by