0

このメソッドを次のようにしようとしています。正しい値を押していない場合はメッセージ ボックスが表示され、メッセージ ボックスを押すと戻り、正しい値を再度入力する必要があります。フィールドが null または空の場合は、=0 を指定する必要があります。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ているため、無限ループが発生し、ユーザーが新しい入力を提供できなくなります。「null または空」の要件については、文字列がいずれかまたは空の場合string.IsNullOrEmptyに返される whichを使用できます。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 に答える