Switch does not work in GUI

3 visualizaciones (últimos 30 días)
Lawson Hoover
Lawson Hoover el 9 de Nov. de 2012
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.

Respuesta aceptada

Walter Roberson
Walter Roberson el 9 de Nov. de 2012
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 comentario
Walter Roberson
Walter Roberson el 10 de Nov. de 2012
Editada: Walter Roberson el 10 de Nov. de 2012
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

Iniciar sesión para comentar.

Más respuestas (2)

Image Analyst
Image Analyst el 10 de Nov. de 2012
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 el 11 de Nov. de 2012
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!

Categorías

Más información sobre Dialog Boxes en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by