How to use not equal to '~=' operator in if statement?
조회 수: 364 (최근 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
댓글 수: 0
채택된 답변
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')
댓글 수: 0
추가 답변 (2개)
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
Zhuoying Lin
2017년 11월 28일
편집: Walter Roberson
2017년 11월 28일
Hi I have a similar question:
when I type:
if (x ~= 'a') && (x ~= 'p') && (x ~= 'T')
fprintf('ERROR:You entered incorrect choice.')
end
but it also shows that:
Operands to the || and && operators must be convertible to
logical scalar values.
Error in term (line 4)
if (x ~= 'a') && (x ~= 'p') && (x ~= 'T')
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
참고 항목
카테고리
Help Center 및 File Exchange에서 General Applications에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!