【问题标题】:"Reset" switch statement after value is equal值相等后的“重置”switch语句
【发布时间】:2018-12-10 18:58:16
【问题描述】:

我想在按钮总共点击 3 次后再次运行我的 switch 和 if/else 语句。

当前按下的代码是三个按钮,每个按钮都有 1 个值。如果这些(当前按下的代码)等于包含 3 数值的全局字符串,则图片框颜色将变为森林绿色。这是我的代码:

        switch ((sender as Button).Text)
        {

            case "1":
                serialMonitor.PrintLine("1");
                currentPressedCode = currentPressedCode + "1";
                break;
            case "2":
                serialMonitor.PrintLine("2");
                currentPressedCode = currentPressedCode + "2";
                break;
            case "3":
                serialMonitor.PrintLine("3");
                currentPressedCode = currentPressedCode + "3";
                break;
            default:
                break;
        }  if (buttonsPressed == 3)
        {
            if (currentPressedCode == vaultCode)
            {

                //vault open
                serialMonitor.PrintLine("vault");
                pcbGreen.BackColor = Color.ForestGreen;

            }
        }
        else
        {
            // wrong code
            serialMonitor.PrintLine("wrong");
            MessageBox.Show("Wrong password"); // wrong password messagebox
            pcbRed.BackColor = Color.DarkRed;
        }

【问题讨论】:

  • 那么这里的问题是什么?
  • 如何在按钮被按下 3 次后再次运行这个 switch 语句?现在,在按钮被点击 3 次后它什么也不做。
  • 听起来你想要一个 while 循环,在每次迭代中检查 buttonsPressed

标签: c# if-statement switch-statement


【解决方案1】:

有很多方法可以做到这一点,但尽量保持逻辑完整:

switch ((sender as Button).Text)
{

    case "1":
        serialMonitor.PrintLine("1");
        currentPressedCode = currentPressedCode + "1";
        break;
    case "2":
        serialMonitor.PrintLine("2");
        currentPressedCode = currentPressedCode + "2";
        break;
    case "3":
        serialMonitor.PrintLine("3");
        currentPressedCode = currentPressedCode + "3";
        break;
    default:
        break;
}
if (buttonsPressed == 3)
{
    if (currentPressedCode == vaultCode)
    {

        //vault open
        serialMonitor.PrintLine("vault");
        pcbGreen.BackColor = Color.ForestGreen;

    }
    else
    {
        // wrong code
        serialMonitor.PrintLine("wrong");
        MessageBox.Show("Wrong password"); // wrong password messagebox
        pcbRed.BackColor = Color.DarkRed;

    }
    buttonsPressed = 0;
    currentPressedCode = "";
}

我所做的唯一更改是:

  1. 将“错误密码”移到“正确密码”之后的其他块 如果阻止
  2. 重置buttonsPressedcurrentPressedCode 在有人输入 3 个数字后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2015-09-04
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多