Switch does not work in GUI

3 次查看(过去 30 天)
While running my code through a GUI the SWITCH function does that detect the cases, or maybe it just jumps to the bottom otherwise every time.
contents = cellstr(get(S.element,'String'));
t1 = contents{get(S.element,'Value')};
t = char(t1);
contents = cellstr(get(S.mass,'String'));
u1 = contents{get(S.mass,'Value')};
u = char(u1);
contents = cellstr(get(S.volume,'String'));
v1 = contents{get(S.volume,'Value')};
v = char(v1);
global dens
switch t
case strcmp(t,'Scandium')
dens = 2.989;
case strcmp(t,'Yttrium')
dens = 4.469;
case strcmp(t,'Selenium')
dens = 4.809;
case strcmp(t,'Krypton')
dens = .003733;
case strcmp(t,'Neodymium')
dens = 7.007;
case strcmp(t,'Antimony')
dens = 6.685;
case strcmp(t,'Astatine')
dens = 7;
otherwise
dens = 8.55;
end
Every time it jumps to the other wise option of -- dens = 8.55.

采纳的回答

Walter Roberson
Walter Roberson 2012-11-9
You need to convert
switch t
to
switch true
because the value that you give in the "switch" is compared to the values of the "case" statements, and the values of the case statements are the result of the strcmp() and hence are true or false.
Alternately, leave it as "switch t" and remove the strcmp()
case 'Yttrium'
  1 个评论
Walter Roberson
Walter Roberson 2012-11-10
编辑:Walter Roberson 2012-11-10
Consider this:
densities = struct('scandium', 2.989', 'yttrium', 4.469, 'selenium', 4.809);
tl = lower(t);
if isfield(densities,tl)
dens = densities.(tl);
else
error('not a known element')
end

请先登录,再进行评论。

更多回答(2 个)

Image Analyst
Image Analyst 2012-11-10
Try it like this:
switch lower(t)
case 'scandium'
dens = 2.989;
case 'yttrium'
dens = 4.469;
case 'selenium'
dens = 4.809;
case 'krypton'
dens = .003733;
case 'neodymium'
dens = 7.007;
case 'antimony'
dens = 6.685;
case 'astatine'
dens = 7;
otherwise
dens = 8.55;
end

Lawson Hoover
Lawson Hoover 2012-11-11
Thank you for the help, I had forgotten that STRCMP returns a true or false. I made the adjustments to the code and now it works! Thanks again!

类别

Help CenterFile Exchange 中查找有关 Fractals 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by