change variable value based on other variable in if loop
28 views (last 30 days)
Show older comments
I have a simple code that takes a user's input, and then changes 2 variables based on that:
var1 = 0;
var2 = 0;
in1 = input('first: ', 's');
in2 = input('second: ', 's');
if in1 = 3 && in2 = 4;
var1 = 2;
var2 = 5;
elseif in1 = 6 && in2 = 7;
var1 = 8;
var2 = 9;
else
disp('invalid input');
end
I didn't really expect it to work, as I was sure I had the syntax wrong. I get the error:
The expression to the left of the equals sign is not a valid target for an assignment.
and I am wondering how I can fix the syntax.
0 Comments
Accepted Answer
Jim Riggs
on 1 Jan 2020
Edited: Jim Riggs
on 1 Jan 2020
Your input command is requesting a string input:
in1 = input('first: ','s');
in2 = input('second: ','s');
This results in in1 and in2 being strings.
To input them as numbers, simply omit the 's'
in1 = input('first: ');
in2 = input('second: ')'
Also, to perform logical comparrison, use 2 equal signs, e.g.:
if in1 == 3 && in2 == 4
5 Comments
Stephen23
on 1 Jan 2020
Edited: Stephen23
on 1 Jan 2020
Nesting input inside str2double is more robust because input by default will execute any input code the user enters. So your user can (maliciously or accidentally) run any code they want, using that input command. With the 's' option input does NOT execute their arbitrary code, but instead returns a character vector, literally what they entered. str2double will convert this character vector to a number if possible, otherwise it returns NaN...
Thus a more robust solution is to nest input inside str2double:
in1 = str2double(input('first: ','s'));
This guarantees that in1 is either a valid number or NaN, without any arbitrary code being evaluated. If you want the user to enter more complex data, e.g. a vector of numbers, then this requires a bit more processing, e.g.:
Of course the best solution is to ditch input entirely and just write functions/classes with well-checked input arguments...
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements 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!