Help with IF/Else statement in GUI

Hi guys, i am new here. :) I have a problem with IF/Else statement, but only in GUI. If i put only one if statement, like this
if s=='Add'
f=x+y;
end
It works, but when i add this:
if s=='Add'
f=x+y;
end
if s=='Substract'
f=x-y;
end
It doesn't work.Also, if i only use
if s=='Substract'
f=x-y;
end
it works.I don't have a clue why is this happening.Any idea?

 採用された回答

Jan
Jan 2017 年 5 月 16 日
編集済み: Jan 2017 年 5 月 16 日

0 投票

There is not connection to the fact, that the code "runs in a GUI" - by the way: there is even nothing like "running in GUI". Code is code.
The problem is the comparison of a string the the == operator, which performs an elementwise comparison. If the compared strings have a different number of characters, such a comparison must fail.
Use strcmp instead:
if strcmp(s, 'Add')
f = x+y;
end
if strcmp(s, 'Substract')
f = x-y;
end
Or with switch/case:
switch s
case 'Add'
f = x+y;
case 'Subtract'
f = x-y;
otherwise % No SWITCH without OTHERWISE!
error('Unexpected value of [s]');
end
Note: In your question you write "doesn't work". Please post the complete error message in the future, because these messages contain valuable information to solve the problem.

その他の回答 (2 件)

jack int
jack int 2017 年 5 月 16 日

0 投票

Switch/case works, but i wanted to know why if/else doesn't. :P

1 件のコメント

Jan
Jan 2017 年 5 月 16 日
Then please read my answer, where I explained the problem with using the == operator:
'test' == '1234'
This replies [false, false, false, false]. In the IF command you want a scalar condition. Therefore Matlab converts the expression internally to:
if all(s=='Add') && ~isempty(s=='Add')
Now try:
'test' == '123'
You get an error message, because an elementwise comparison is not working.

サインインしてコメントする。

jack int
jack int 2017 年 5 月 17 日

0 投票

Thanks!

カテゴリ

ヘルプ センター および File ExchangeMATLAB Report Generator についてさらに検索

タグ

質問済み:

2017 年 5 月 16 日

回答済み:

2017 年 5 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by