using System;
class A
{
    static void Main(string[] args)
    {
        int i;
        char c;
            while(true)
            {
               i=Console.Read();
               if(i==-1) break;
               c=(char)i;
               Console.WriteLine("Echo: {0}",c);
            }
        Console.WriteLine("done");
    }
}
如果输入字符串good
应该输出结果为
Echo:g
Echo:o
Echo:o
Echo:d
done
但调试结果为
Echo:g
Echo:o
Echo:o
Echo:d
Echo:
Echo:

解决方案 »

  1.   

    你在good后来敲了回车键...回车包括两个字符'\n'和'\s'...这两个字符都看不见...
    这是计算机基础知识...
      

  2.   

    Console.Read方法读取所有输入的字符,包括回车...改成Console.ReadLine()...
      

  3.   

    不过Console.ReadLine读取的是字符串,你这段代码就必须后面带\r\n...你可以过滤掉它们...
      

  4.   

    很感谢你。但是改成Console.ReadLine() 提示无法将类型string 隐式转换int,还望能再说的仔细点吗(代码后面必须带\r\n)
      

  5.   

    还有它怎么不执行Console.WriteLine("done");这语句
      

  6.   

    ////////////////
    但调试结果为 
    Echo:g 
    Echo:o 
    Echo:o 
    Echo:d 
    Echo: 
    Echo:
    ///////////////
    输出的两行
    Echo: 
    Echo:
    是输出了\r\n
    没有输出"done" 是因为根本就没有退出whuile循环
    得到你想要,修改成如下的代码即可:
    static void Main(string[] args)
            {
                string input = Console.ReadLine(); ;
                for (int i = 0; i < input.Length; i++)
                {
                    Console.WriteLine("Echo: {0}", input[i]);
                }
                Console.WriteLine("done");
            }
      

  7.   

                int i;
                char c;
                while (true)
                {
                    i = Console.Read();
                    if (i == -1 || i==10 || i==13) break;                c = (char)i;
                    Console.WriteLine("Echo: {0}", c);
                }
                Console.WriteLine("done");
                Console.Read();
                Console.Read();像上面这样就可以了
      

  8.   

    if (i == -1 || i==10 || i==13) break; 
    能解释一下这一行是什么意思吗
      

  9.   

    还有就是为什么之前我的代码跳不出那个循环。
    按常理来说应该输出done的阿
      

  10.   

    if (i == -1 || i==10 || i==13) break;
    能解释一下这一行是什么意思吗
    你最后是按了一下回车键的,回车键就等于 10 和13,而且10和13输出出来就是空行,所以碰到10或者13忽略就可以了。