1

プログラムの場合、ユーザーが 0 以上の数値以外を入力すると、プログラムは「無効です。0 以上の数値を入力してください」と表示します。その後、プログラムは「無効です。0 以上の数値を入力してください」と言い続けます。0 以上の数字が入力されるまで、何度も繰り返します。

問題は、文字を入力すると、プログラムが「無効です。0 以上の数字を入力してください」と応答しないことです。

これは私がこれまでにできるすべてです:

    class Program
    {
        static void Main(string[] args)
        {
            string numberIn;
            int numberOut;

            numberIn = Console.ReadLine();

            if (int.TryParse(numberIn, out numberOut))
            {
                if (numberOut < 0)
                {
                    Console.WriteLine("Invalid. Enter a number that's 0 or higher.");
                Console.ReadLine();
                }
            }           
        }
    }
4

3 に答える 3

3

ある種のループが必要です。おそらくwhileループ:

static void Main(string[] args)
{
    string numberIn;
    int numberOut;

    while (true) 
    {
        numberIn = Console.ReadLine();

        if (int.TryParse(numberIn, out numberOut))
        {
            if (numberOut < 0)
            {
                Console.WriteLine("Invalid. Enter a number that's 0 or higher.");
            }
            else
            {
                break; // if not less than 0.. break out of the loop.
            }
        }    
    }

    Console.WriteLine("Success! Press any key to exit");
    Console.Read();
}
于 2013-10-04T00:24:03.550 に答える
2

if を次のように置き換えます。

while (!int.TryParse(numberIn, out numberOut) || numberOut < 0)
{
    Console.WriteLine("Invalid. Enter a number that's 0 or higher.");
    numberIn = Console.ReadLine();
} 
于 2013-10-04T00:23:56.387 に答える
0

シンプルできちんとしたアプローチが必要な場合は、これを使用できます。

while (Convert.ToInt32(Console.ReadLine()) < 0)
{
    Console.WriteLine("Invalid entry");
}

//Execute code if entry is correct here.

ユーザーが数値を入力するたびに、入力された数値が 0 未満かどうかがチェックされます。入力が無効な場合、whileループはループし続けます。入力が有効な場合、条件は false で、ループは閉じます。

于 2013-10-04T00:32:09.820 に答える