OR statement in MATLAB issue
Mostra commenti meno recenti
Hey guys so I have this problem with code assigned to 'x' variable. I want to use OR statement (i.e. if strcmp of x is Black OR Brown OR Orange, then display 'Input saved') and move on to variable 'p'. But when I enter anything (even a given colour) or nothing at all and press enter, then the program would loop back to x. How do I fix this?
Please help
Thank you <3 :)
x = [];
while isempty(x)
x = lower(input('Select colour for Disc1: "Black", "Brown", "Orange", 's'));
if strcmp(x, 'Black') || strcmp(x,'Brown') || strcmp(x,'Orange')
disp('Input saved')
else
disp('Error: Please choose a colour')
x = [];
end
end
p = [];
while isempty(p)
p = lower(input('Select colour for Disc2: "Black", "Brown", "Orange", 's'));
end
1 Commento
Viraj Rodrigo
il 28 Apr 2018
Modificato: Viraj Rodrigo
il 28 Apr 2018
Risposte (2)
Ameer Hamza
il 28 Apr 2018
Modificato: Ameer Hamza
il 28 Apr 2018
In this line
x = lower(input('Select colour for Disc1: "Black", "Brown", "Orange", s'));
here you are using lower, whereas, in next line, you are making a comparison with "Black". This condition is failing due to case difference.
John D'Errico
il 28 Apr 2018
Modificato: John D'Errico
il 28 Apr 2018
While you want to understand the issue of how to use strcmp, a better test is to not do so at all!
So you might use strcmpi, which does a case insensitive test instead.
Better and simpler yet? Use ismember.
if ismember(lower(x), {'black' 'brown' 'orange'})
Do you really want to understand why your code using strcmp failed? Sigh. :)
x = 'Black'
x =
'Black'
x = lower(x)
x =
'black'
strcmp(x,'Black')
ans =
logical
0
Of course they are not the same. You converted the input to all lower case. But then you compared x to an upper case color name.
That is why strcmpi helps.
x
x =
'black'
strcmpi(x,'Black')
ans =
logical
1
But still, USE ISMEMBER.
Categorie
Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!