51492


int型変数に標準入力で数字を入力して変数に入れますが、エンターキーを入力した場合に  
無視されてまた入力を受け付ける方法を知りたいのですが教えてくれますでしょうか？  
while()の条件の式など思いつかないのでその辺も知りたいです。

[code]

    static void Main(string[] args)
    {
    
        Console.Write(">: ");
        int x = int.Parse(Console.ReadLine());
        Console.WriteLine(x);
    
        Console.ReadKey();
    
    }
    
[/code]


CC BY-SA 4.0
2018-12-23T12:11:25.907
51458
2018-12-25T02:19:22.323
2018-12-23T15:02:18.833
2238
question
c#
標準入力でエンターキーの入力を無視したい。


回答になってるかな？

[code]

    static void Main(string[] args)
    {
        Console.Write(">: ");
        string input;
        while ((input = Console.ReadLine().Trim()) == "")
        {}
        int x = int.Parse(input);
        Console.WriteLine(x);
        Console.ReadKey();
    }
    
[/code]


CC BY-SA 4.0
2018-12-24T04:26:57.377
51470
2018-12-24T04:26:57.377
31566
51458
answer


エンターキーを押したときに処理を続行するならば、特定の条件になるまでループします。

下記のコードは`Console.ReadLine()`を使って数字が入力される限りループする方法と、`Console.Read()`を使って複数行の入力を受け付ける方法を例示しています。  
`Console.ReadKey()`を使えばさらに柔軟に入力を受け付けますが、柔軟すぎてバックスペースやエンターキーによる表示の更新を自前で行う必要があるため、コードから除外しました。

[code]

    using System;
    using System.Collections.Generic;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 1.単純にEnterを無視
                while (true)
                {
                    Console.Write(">: ");
                    int x;
                    var s = Console.ReadLine();
                    if (int.TryParse(s, out x))
                    {
                        Console.WriteLine(string.Format("{0}が入力されました。", x));
                    }
                    else
                    {
                        Console.WriteLine(string.Format("{0}は数字ではありません。", s));
                        break;
                    }
                }
                Console.WriteLine("");
    
                // 2.Console.ReadでEnterにかかわらず処理を続ける
                Console.Write("qで切断 >: ");
                var chars = new List<char>();
                var xs = new List<int>();
                var c = (char)Console.Read();
                while (c != 'q' && c != 'Q')
                {
                    if (c == '\n' && chars.Count > 0)
                    {
                        xs.Add(int.Parse(string.Concat(chars)));
                        chars.Clear();
                    }
                    else if ('0' <= c && c <= '9')
                    {
                        chars.Add(c);
                    }
                    c = (char)Console.Read();
                }
                Console.WriteLine("以下の数値が入力されました。");
                xs.ForEach(Console.WriteLine);
    
                Console.ReadKey();
            }
        }
    }
    
[/code]

**入出力例**

> >: 2099  
>  2099が入力されました。  
>  >: 20XX  
>  20XXは数字ではありません。
>
> qで切断 >: 114514  
>  11yoko14!  
>  q  
>  以下の数値が入力されました。  
>  114514  
>  1114

エンターキーを入力した時にどのような挙動を期待するのかによって回答が変わりますので、上記のコードが意図した内容でなければ質問に追記をお願いします。


CC BY-SA 4.0
2018-12-25T02:19:22.323
51492
2018-12-25T02:19:22.323
9820
51458
answer