Console.ReadLineが入力を待ってくれません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AI
記事: 27
登録日時: 13年前

Console.ReadLineが入力を待ってくれません

#1

投稿記事 by AI » 11年前

こんばんは。AIと申します。

以下の様なコードの時、14行目のReadLineが入力を待機してくれず、nullのまま進んでエラーになってしまいます。
ReadLineは入力を待ってくれるわけではないのでしょうか。

お手数ですがご教授をお願い致します。

コード:

        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("BMIから計算したい場合は1、体重から計算したい場合は2を入力");
                Console.WriteLine("(2は未実装)");
                int Flg = Console.Read();
                switch (Flg)
                {
                    case 49:
                        Console.WriteLine("まず身長(cm)->");

                        string Height_st;
                        Height_st = Console.ReadLine();
                        double Height = double.Parse("Height_st");


                        Console.WriteLine("お好みのBMI->");
                        Console.WriteLine("BMI15.0以下…危険!痩せすぎ");
                        Console.WriteLine("BMI17.0以下…痩せている");
                        Console.WriteLine("BMI19.0以下…モデル並(理想的)");
                        Console.WriteLine("BMI21.0以下…少しおデブ");
                        Console.WriteLine("BMI23.0以下…おデブ");
                        Console.WriteLine("BMI23.1以上…??????");

                        double BMI = double.Parse(Console.ReadLine());

                        double A = BMI * (Height / 100) * (Height / 100);

                        Console.WriteLine("体重=" + A);
                        Console.WriteLine("");

                        break;
                    case 50:
                        break;

                }

            }
        }
最後に編集したユーザー AI on 2013年11月23日(土) 19:14 [ 編集 1 回目 ]

AI
記事: 27
登録日時: 13年前

Re: Console.ReadLineが入力を待ってくれません

#2

投稿記事 by AI » 11年前

申し訳ありません、行数を入れ忘れていたので修正しました。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: Console.ReadLineが入力を待ってくれません

#3

投稿記事 by へにっくす » 11年前

リファレンス参照。(解説の日本語が変ですけど、例を見れば分かるかな?)
Console.Readメソッド(System)

Console.Readはあくまでも、一文字を読み込むメソッドです。EnterしてもそれをConsole.Readが読んでくれるわけではありません。
で次のConsole.ReadLineでEnter文字を読み込むのでHeight_stは空の文字列のままということに。。
なので、Enterを示す文字を読み込むまで繰り返しConsole.Readメソッドを呼ぶ必要があります。

上記のリンク先の解説の最後にもあるように、Readの代わりにReadLineを使うことをお勧めします。
written by へにっくす

AI
記事: 27
登録日時: 13年前

Re: Console.ReadLineが入力を待ってくれません

#4

投稿記事 by AI » 11年前

な、なるほど…!ものすごくわかりやすかったです!
なんでこんなことになったのか、全然わからなかったので本当に助かりました!
ご助力いただきありがとうございました!
このトピックは解決とさせていただきます。

閉鎖

“C言語何でも質問掲示板” へ戻る