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

457 Ansichten (letzte 30 Tage)
Sohail Ahmed
Sohail Ahmed am 21 Feb. 2017
Kommentiert: Walter Roberson am 28 Nov. 2017
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

Akzeptierte Antwort

John D'Errico
John D'Errico am 21 Feb. 2017
Bearbeitet: John D'Errico am 21 Feb. 2017
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')

Weitere Antworten (2)

Jan
Jan am 21 Feb. 2017
Remember, that the negation of
(x=='A') || (x=='B')
is:
~((x == 'A') || (x == 'B')) ==>
~(x == 'A') && ~(x == 'B') ==>
(x ~= 'A') && (x ~= 'B')
  2 Kommentare
Zhuoying Lin
Zhuoying Lin am 28 Nov. 2017
Bearbeitet: Walter Roberson am 28 Nov. 2017
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
Walter Roberson am 28 Nov. 2017
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

Melden Sie sich an, um zu kommentieren.


Torsten
Torsten am 21 Feb. 2017
Bearbeitet: Torsten am 21 Feb. 2017
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.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by