【问题标题】:Switch statement in a C# calculatorC#计算器中的switch语句
【发布时间】:2019-06-01 11:26:41
【问题描述】:

计算器无法计算百分比运算。我将在下面提供 switch 语句。我希望你能帮助我!

只有最后一个case "%": number = (percentage / 100) * totalNumber; 不起作用。

调试器说:

控制不能从一个案例标签转移到另一个案例标签。

private void button15_Click(object sender, EventArgs e) {
        switch (operationPerformed) {
            case "+":
                textBox_Result.Text=(resultValue + Double.Parse(textBox_Result.Text)).ToString();
                break;
            case "-":
                textBox_Result.Text = (resultValue - Double.Parse(textBox_Result.Text)).ToString();
                break;
            case "*":
                textBox_Result.Text = (resultValue * Double.Parse(textBox_Result.Text)).ToString();
                break;
            case "/":
                textBox_Result.Text = (resultValue / Double.Parse(textBox_Result.Text)).ToString();
                break;
            case "%":
                number = (percentage / 100) * totalNumber;

            default:
                break;
        }
    }

我希望它可以计算某个数字的百分比,但由于某种原因它不起作用。

【问题讨论】:

  • 查看其他case 分支(显然不会产生编译器错误)。这些其他case 分支有什么共同点,而您的case 分支与number = (percentage / 100) * totalNumber; 中缺少什么?如果您注意到 case 分支中缺少什么,最好查阅文档以了解该缺失位的用途/功能是什么;-) (docs.microsoft.com/en-us/dotnet/csharp/language-reference/…)
  • 你在number = (percentage / 100) * totalNumber;之后缺少break;
  • 其中一个案例块与其他案例块不同......
  • 谷歌搜索“控制不能从一个案例标签转移到另一个案例标签。”在第一个结果中立即给我一个解决方案,下次试试。
  • 删除默认行。

标签: c# calculator percentage


【解决方案1】:

我认为你在 case "%" 之后犯了一个错误:

计算百分比的实际公式是:(部分/全部)* 100

你应该试试这样的:

case "%":
   result = (obtained / total) * 100; 
   break;

【讨论】:

    【解决方案2】:

    检查这个,请不要添加伪代码

    case "%":
        textBox_Result.Text = (Double.Parse(textBox_Result.Text) * resultValue / 100.0).ToString();
    

    【讨论】:

    • 调试器说:不能隐式地将类型'double'转换为'string'。
    • 检查我的编辑但想想为什么编译器会给出这个错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2021-11-24
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多