SWITCH expression must be a scalar or a character vector. issue
76 views (last 30 days)
Show older comments
Hi im trying to calculate price of 1,2,3 or more glass of milk. 1 glass of milk must be 1.75$ 2 is 3.0$ 3 is 3.5$ and for more glass 3.5$ + 0.5+ for every glass, but i am getting this error "SWITCH expression must be a scalar or a character vector". Any idea ? i check forum before but answer i get dont solve my problem thx for any help. Btw my proffesor only accept the homework if i use "inputdlg" "msgbox(sprintf(", and switch case stracture.
box=inputdlg('how many glass of milk');
switch box
case '1'
price=1.75;
case '2'
price=3;
case '3'
price=3.5;
otherwise
price=3.5+(0.5)*x;
end
msgbox(sprintf('you must pay %f',price));
0 Comments
Accepted Answer
Alex Mcaulley
on 12 Mar 2019
inputdls is returning a cell, and also the variable x is not defined. Then you need to do something like this:
box=inputdlg('how many glass of milk');
switch box{1}
case '1'
price=1.75;
case '2'
price=3;
case '3'
price=3.5;
otherwise
price=3.5+(0.5)*str2double(box{1});
end
msgbox(sprintf('you must pay %f',price));
1 Comment
Guillaume
on 12 Mar 2019
If you want the code to be robust (remember that user input can be completely different from what you expected), I would do the conversion to double before the switch, then check it is indeed a number and scalar, so:
box = inputdlg('how many glass of milk');
box = str2double(box{1}); %will be nan if box{1} is not a number
assert(~isnan(box) && isscalar(box), 'Invalid input');
switch box
case 1 %no longer a char array
%...
end
More Answers (0)
See Also
Categories
Find more on Startup and Shutdown 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!