static void Main(string[] args)
        {
            //用ReadLine()的情况
            /*string s="y";
            do
            {
                Console.Write("请输入一字符串:");
                s = Console.ReadLine();
            } while (s == "y");*/
            //用Read()的情况
            char s = 'y';
            do
            {
                Console.Write("请输入一字符串:");
                s = (char)(Console.Read());
            } while (s =='y');
        }
如上所示,第一种情况,使用ReadLine()输入的时候,没发生错误,下次循环时继续给s赋新的值;而第二种情况,使用Read(),下次循环时,s直接被赋值为上次使用Read()输入时的最后一个字符(一般是换行符),而不是让我重新再给s赋次值。

解决方案 »

  1.   

    刚解决了,因为本来是想用读出来的字符赋值做循环判定条件的,例如每次询问是否要继续循环,然后读输入的数据:‘y’ or ‘n’。如果采用Read()方法的话,由于一次只能读取一个字符,所以第一次循环时输入:'y'后,将第一个字符y赋值给判定变量s,满足条件s==‘y’,执行第二次循环。第二次循环本应该再提示输入一次‘y’ or ‘n’,但由于第一次作为输入结尾的'\r'被看做是一个未处理的输入储存着,故直接将其赋值给判定变量s,不满足条件,终止循环。