Switch expression must be a scalar or string constant -- Matlab GUI
Show older comments
Hello to everyone,
I am creating a GUI where a user can select with radio button three different type of steels. For the first two type, I don't have a problem because I call "304" and "316". The third option instead is a string value called "STR18" and when I try to execute my script Matlab says " Switch expression must be a scalar or string constant". I think that the problem could be in the variable "steeltype", but I am not sure. How can I solve my problem? How can I use, at the same time, numbers and string for the switch function ?
Thanks in advance
function pushbutton1_Callback(hObject, eventdata, handles)
st= get(handles.bottoni,'SelectedObject');
steeltype=str2num(get(st,'String'));
riduzione= str2num(get(handles.riduzione,'String'));
e=riduzione;
switch steeltype
case 1
......
case 2
......
case 3
......
otherwise
end
1 Comment
Stephen23
on 20 Jul 2017
Why convert your perfectly nice strings into numbers? Get rid of the str2num and use strings to specify the switch cases.
Answers (1)
Just keep them all as strings. You can't convert STR18 to a number so don't convert the others either, just switch on the strings instead.
Incidentally you should use str2double rather than str2num.
5 Comments
Giuseppe Napoli
on 20 Jul 2017
Edited: Giuseppe Napoli
on 20 Jul 2017
"but Matlab still doesn't recognize the variable STR18"
Which is quite reasonable as you do not have any variable named STR18. You might have a string containing the characters 'STR18', but that is a totally different thing entirely.
Please show use the complete error message, this means all of the red text.
And note that once you get rid of the useless str2num the case will need to use the correct string, e.g.:
switch steeltype
case 'STR18'
...
case 'blahblah'
...
end
Giuseppe Napoli
on 20 Jul 2017
Jan
on 20 Jul 2017
@Giuseppe: If the answer has helped you to solve the problem, please accept it.
Categories
Find more on Characters and Strings 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!