1

初心者の C# で友人を手伝っていますが、奇妙な問題に遭遇しました。

オンラインのlæn = Console.ReadLine()31 行目はスキップされています。これにより、.Parseオンライン 32 でエラーがスローされます。

最初のものの後に余分なものを入れると、læn = Console.ReadLine()機能し始めます。

static void Main(string[] args)
{
    double areal, læn1, høj1 = 0;
    int figur;
    string tekst, læn, høj;

    tekst = ("Du skal nu vægle en figur.");
    tekst += ("\nTryk 1 for rektangel");
    tekst += ("\nTryk 2 for cirkel");
    tekst += ("\nTryk 3 for en retvinklet trekant");
    tekst += ("\nValg: ");
    Console.Write("{0}", tekst);
    figur = Console.Read();
    switch (figur)
    {
        case '1':
            {
                Console.WriteLine("Du har valgt en rektangel. \nHvad er længden: ");
                læn = Console.ReadLine(); //Line 31
                læn1 = double.Parse(læn); //Line 32

                Console.WriteLine("hvad er højden?");
                høj = Console.ReadLine();
                høj1 = double.Parse(høj);

                areal = læn1 * høj1;
                Console.WriteLine("\n{0} * {1} = {2}", læn, høj1, areal);

                Console.ReadKey();
            }
            break;

        default:
            Console.WriteLine("Du har ikke valgt 1,2 eller 3");
            Console.ReadKey();
            break;
    }
}
4

2 に答える 2

7

状態からのドキュメントConsole.Read

Read入力文字を入力している間、メソッドは戻りをブロックします。キーを押すと終了しますEnter

Enterこれは、どれだけ書いても、を押したときにのみ値を返すことを意味します。

次のステートメントがConsole.ReadLine()あり、読み取りが保留中のストリームにまだ行末があるため( をEnter押したが、押されたキーのみを処理したため)、そのステートメントを「食べます」。

Console.ReadKey()代わりに使用することを検討してください。

于 2014-11-17T12:27:27.603 に答える