How to use not equal to '~=' operator in if statement?

745 次查看(过去 30 天)
My code works fine with '==' but not with '~='.I expect it not to display 'error' if user enters A or B
x=input('input x','s')
if(x~='A')||(x~='B')
disp('error');
end

采纳的回答

John D'Errico
John D'Errico 2017-2-21
编辑:John D'Errico 2017-2-21
A problem of elementary logic?
You want an error to return only if A is not in the set {'A','B'}. So a call to ismember might be a good alternative.
Regardless, given the approach you have followed, if x is equal to 'A', then the second half of the clause will be true, even though the first part of the clause is false. And the logical statement
false || true
is TRUE.
You are asking for a result that is only true when BOTH parts of the clause are true. Use a logical and, NOT a logical or.
if(x~='A') && (x~='B')

更多回答(2 个)

Jan
Jan 2017-2-21
Remember, that the negation of
(x=='A') || (x=='B')
is:
~((x == 'A') || (x == 'B')) ==>
~(x == 'A') && ~(x == 'B') ==>
(x ~= 'A') && (x ~= 'B')
  2 个评论
Walter Roberson
Walter Roberson 2017-11-28
if any((x ~= 'a') & (x ~= 'p') & (x ~= 'T'))
fprintf('ERROR:You entered incorrect choice.')
end
or
if ~all( ismember(x, {'a', 'p', 'T'}) )
fprintf('ERROR:You entered incorrect choice.')
end

请先登录,再进行评论。


Torsten
Torsten 2017-2-21
编辑:Torsten 2017-2-21
If user enters A, then x~=B is true, so (x~='A')||(x~='B') is true, thus "error" is displayed.
Same for B.
Best wishes
Torsten.

类别

Find more on Source Control Integration in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by