我在(c#)dos窗口下编一个输出三角形的程序。通过consolekey获取键值来判定是否为esc键并退出,通过console.readline()获取要打印的三角形行数。  但这样输入数字的时候需要按两次(consolekey 和readline)--比如输入行数3,需要将3键按两次,怎么解决比较好?
部分代码如下
...
if ((key = Console.ReadKey(true).Key) != ConsoleKey.Escape)
                //判断用户是否按下esc键,不是则继续
{
                    try
                    {
                        lines = int.Parse(console.readline());
                    }
                    catch
                    {                        Console.WriteLine("请输入正确的整数值!");
                        continue;
                    }
.........能用readkey获取输入的数值吗?但这个只能接收单一键值,而且我调试时输入3的时候,console.write()输出的是D3而不是3.

解决方案 »

  1.   

    你用if的话就需要输入2次,第一次被if()的条件捕获,第2次才会被lines = int.Parse(console.readline()); 捕获
    用while来判断每次输入的值,
      

  2.   

    貌似不行,跟条件判断语句没关系,console.readline()和Console.ReadKey()会导致两次获取
      

  3.   

    bool state = true;
                List<string> list = new List<string>();
                while (state)
                {
                    ConsoleKeyInfo keyinfo = Console.ReadKey();
                    if (keyinfo.Key == ConsoleKey.Escape)
                    {
                        state = false;
                    }
                    else
                    {
                        if (keyinfo.Key == ConsoleKey.Enter)
                        {
                        }
                        else
                        {
                            list.Add(keyinfo.Key.ToString());
                        }
                    }
                }
      

  4.   

    using System;
    using System.Collections.Generic;
    namespace gets
    {
    class class2
        {
                static void Main()
            {
                    bool state = true;
                    string b=string.Empty;
                    List<string> list = new List<string>();
                    while (state)
                    {
                        ConsoleKeyInfo keyinfo = Console.ReadKey();
                        if (keyinfo.Key == ConsoleKey.Escape)
                        {
                            state = false;
                            break;
                        }
                        else
                        {
                            if (keyinfo.Key == ConsoleKey.Enter)
                            {
                                Console.WriteLine("");
                                break;
                            }
                            else
                            {
                                list.Add(keyinfo.Key.ToString());
                               
                            }
                        }
                    }
                    foreach (string n in list)
                    {
                        b=b+n;
                    }
                    Console.WriteLine(b);             }        
        }
    }比如上面的程序,你输入23,得到的b值的输出是D2D3