0

次のコードは、名前と姓を尋ねます。

class Program
{
        static void Main(string[] args)
        {
            Console.Write("Enter your name: ");
            string s = Console.ReadLine();
            Console.WriteLine("Your name: " + s);
            Console.Write("Enter your surname: ");
            int r = Console.Read();
            Console.WriteLine("Your surname: " + r);

            Console.ReadLine();
        }
}

名前を入力すると、プログラムは入力内容を正常に表示します。ただし、姓を入力すると、プログラムはすぐに停止します。私の理解では、 Console.Read() は、入力した文字列の最初の文字 (ASCII コード?) の int 値を返す必要があります。

Console.Read() の直後にプログラムが終了するのはなぜですか? Console.ReadLine() は、プログラムを開いたままにするべきではありませんか? Visual Studio 2012 を使用しています。

4

2 に答える 2

2

コンソールに姓を入力するように指示すると、単一の文字が求められます。

Console.Write("Enter your surname: ");
int r = Console.Read();

これは確かに、終了する前に別の ReadLine が続く ReadLine である必要があります。おそらく、最初の文字を (Read に) 入力し、その後に後続の文字を入力し、Enter キーを押して姓を受け入れますが、実際には終了する ReadLine にいます。そう:

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Enter your name: ");
        string s = Console.ReadLine();
        Console.WriteLine("Your name: " + s);
        Console.Write("Enter your surname: ");

        // change here
        string surname = Console.ReadLine();
        Console.WriteLine("Your surname: " + surname);

        Console.ReadLine();
    }
}

int r = Console.Read() の後、プログラムは終了しません。

于 2015-10-12T12:25:53.130 に答える
1

コンソール アプリケーションがどのように実行されたかに基づいて、すべてのコード行が実行されてから「戻ります」。これが完了すると、すべての意図と目的に関して、必要なことを実行したため、プログラムが閉じられます。作業が終わったときに、じっと座って開いているわけではありません。

ウィンドウを開いたままにしたい場合Console.Readline()は、最後に書き込み、入力が完了するまで開いたままにします。私が始めたときにこの問題が発生したことを覚えています。プログラムが予期せず終了するという問題ではなく、終了する前にコンソールで結果を確認したいということです。

于 2015-10-12T12:23:47.963 に答える