检查控制台输出的每个值

时间:2018-09-20 20:09:52

标签: c#

我想逐个读取每个值,他们一直键入每个值,直到他们按下结束“输入检查”的值为止。

我检查了其他几篇文章,但对我都不起作用,因为我不想使用数组或列表,因此必须对值进行一次检查,如果发生这种情况,请使用该方法。

我设法实现了这一目标:

    char END = '#', value;
    bool found= false;
    int count = 0;

    Console.WriteLine("Write a line ending in '#'.");
    value = Convert.ToChar(Console.Read());
    if (value == END) 
        found = true;

    while (!found) 
    {
        count++;
        value = Convert.ToChar(Console.Read());
        if (value == END) 
            found = true;
    }
}
Console.WriteLine("You have typed " + count);

2 个答案:

答案 0 :(得分:4)

您应该使用StringBuilder对象,可以将字符一个接一个地添加到该对象。我也简化了您的逻辑。

    char END = '#';
   var sb = new StringBuilder();
    Console.WriteLine("Write a line ending in '#'.");

    while (true) 
    {
        var ch = Convert.ToChar(Console.Read());
        if (ch == END) 
            break;
        sb.Append(ch)
    }
}
Console.WriteLine("You have typed " + sb.ToString());

答案 1 :(得分:-1)

这样的事情。

static void Main(string[] args)
{
    StringBuilder sb = new StringBuilder();
    Console.WriteLine("Write a line ending in '#'.");
    ConsoleKeyInfo keyInfo;
    do
    {
        keyInfo = Console.ReadKey();

        // Evaluate Input Key
        if (int.TryParse(keyInfo.Key.ToString(), out int i))
        {
            ; // do something with an int
        }
        else
        {
            ; // do something with char 
        }

        if (keyInfo.KeyChar != '#') 
        {
            sb.Append(keyInfo.KeyChar);
        }
    }
    while (keyInfo.KeyChar != '#');

    Console.WriteLine();
    Console.WriteLine($"You typed '{sb.ToString()}' which is {sb.Length.ToString()} character(s).");
    Console.WriteLine("Press any key to exit.");
    Console.ReadLine();
}