C# WPF计算器仅加法可用 减乘除无输出问题排查求助
问题根因
你给运算符控件rechnung_zeichen赋值的时候,减、乘、除三个运算符后面都多带了一个空格:
- 减法赋值的是
"- "(带尾部空格),但等号逻辑里判断的是"-"(无空格) - 乘法赋值的是
"* "(带尾部空格),但等号逻辑里判断的是"*"(无空格) - 除法赋值的是
": "(带尾部空格),但等号逻辑里判断的是":"(无空格)
只有加法赋值的"+"和判断条件完全一致,所以只有加法能匹配成功进入分支赋值结果,其他三个运算符的字符串匹配都失败,自然不会给结果控件赋值。
修复方案
要么把运算符赋值的尾部空格删掉,要么把判断条件里的运算符改成带空格的版本,建议统一去掉无意义的空格,修改三个运算符点击事件的赋值逻辑即可:
public void minus_Click(object sender, RoutedEventArgs e) { // 去掉尾部空格 rechnung_zeichen.Content = "-"; } public void geteilt_Click(object sender, RoutedEventArgs e) { // 去掉尾部空格 rechnung_zeichen.Content = ":"; } public void mal_Click(object sender, RoutedEventArgs e) { // 去掉尾部空格 rechnung_zeichen.Content = "*"; }
其他可优化点
- 代码里的四行
Convert.ToString(a/b/c/d)没有任何作用,你没有把转换后的字符串赋值给任何变量,完全可以删掉 - 现在用int做运算会有整数除法截断的问题,比如3/2会得到1而不是1.5,如果需要小数结果可以把变量类型换成double
- 可以把
rechnung_2.HasContent的判断提到所有分支外面,不用每个条件都重复写一遍 - 除法运算要加除零判断,避免用户输入除数为0的时候程序崩溃
内容的提问来源于stack exchange,提问作者user16574704
相关产品推荐
相关产品推荐

