-2

このコードで私が直面している問題は、ループの最初の反復は良好ですが、2回目の反復でyを押すとプログラムでエラーが発生することです。エラー = 入力文字列の形式が正しくありません。

エラー行 = my = int.Parse(Console.ReadLine());

static void Main(string[] args)
{
    int a, my;
    char again = 'y';
    while ((again == 'y' || again=='Y'))
    {
        Console.Write("Enter the value for your number = ");
        my = int.Parse(Console.ReadLine());
        Random b = new Random();
        a = b.Next(1, 6);
        if (a == my)
        {
            Console.WriteLine("Congratulations");
        }
        else
        {
            Console.WriteLine("you Lost");
            Console.WriteLine("My no is {0}.", a);
        }
        Console.Write("Again? Then press 'y' or 'Y' = ");
        again = (char)Console.Read();
    }
    Console.ReadLine();
}
4

2 に答える 2

2

変化する

again = (char)Console.Read();

again = (char)Console.ReadLine().First();

Console.Read標準入力ストリームから次の文字を読み取ります。続行するには、キー (この場合は「y」) を押して「enter」を押します。これは、2 文字入力して 1 を読み取ることを意味しますConsole.Readline。したがって、この行で実際の文字列を取得することはありません

my = int.Parse(Console.ReadLine());

むしろ、以前に読んだことのない文字を取得します。そして、これは整数に解析できません。

于 2013-10-20T20:08:37.110 に答える
0

に入っている場合はInput string was not in a correct formatInt32.Parseに置き換えてみてくださいInt32.TryParse

Int32.TryParse(Console.ReadLine(), out my);
于 2013-10-20T20:10:14.143 に答える