0

我正在尝试使这种方法像,如果您没有按下正确的值,则会显示一个消息框,当您按下消息框时它将返回,您必须尝试再次输入正确的值,依此类推。如果该字段为空或为空,则必须给出 = 0 .. 如果我按 ex。e2 它必须与消息框一起使用?

试过这个没有 else if .. 并且消息框 vil 没有消失?请帮忙

    public int playerOneDart1Value;
    public int calculateDart1()
    {



        if (player == "t1" || player == "T1" || player == "3")
        {
            playerOneDart1Value = 3;
        }

       else if (player == null) or empty??
        {
            playerOneDart1Value = 0;
        }

        else
        {
            MessageBox.Show("not valid input");
            return calculateDart1();


        }

        return playerOneDart1Value;
    }
4

3 回答 3

2

您正在calculateDart1递归调用该函数,因此消息框不会消失的原因是它MessageBox.Show("not valid input");被一遍又一遍地调用。

于 2015-02-20T14:55:15.030 回答
2

return calculateDart1();在显示消息框后直接调用,因此在再次进行检查并显示消息框之前,用户永远没有机会更改输入。

于 2015-02-20T14:55:26.650 回答
1

您在提示calculateDart1()后立即调用MessageBox,这会导致无限循环,使用户无法提供新的输入。对于您的“空或空”要求,如果字符串为空或空,您可以使用string.IsNullOrEmptywhich 返回。truenull

public int playerOneDart1Value;
public int calculateDart1()
{
    if (string.IsNullOrEmpty(player))
    {
        playerOneDart1Value = 0;
    }
    else if (player == "t1" || player == "T1" || player == "3")
    {
        playerOneDart1Value = 3;
    }
    else
    {
        MessageBox.Show("not valid input");
        //you can use something like a negative value to indicate invalid input
        playerOneDart1Value = -1;
    }
    return playerOneDart1Value;
}
于 2015-02-20T14:57:55.107 回答