当前位置:编程学习 > C#/ASP.NET >>

Console.Read()的迷惑????

小弟初学C#
这两天做了个最基本的自动取款机模拟系统..
在做的过程中遇到了这个问题..
在网上查过资料后仍然不很清楚具体过程...
下面是我另写的一个测试程序,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 测试Console.Read
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("Input:");
                int a = Console.Read();
                Console.WriteLine("Out:{0}",a);
                Console.WriteLine("---------------");
            }
        }
    }
}


运行时,当我直接回车时,结果如下:
Input:

Out:13
---------------
Input:
Out:10
---------------
Input:
当我输入1时,结果如下:
Input:
1
Out:49
---------------
Input:
Out:13
---------------
Input:
Out:10
---------------
Input:
当我输入11时,结果如下:
Input:
11
Out:49
---------------
Input:
Out:49
---------------
Input:
Out:13
---------------
Input:
Out:10
---------------
Input:
其中:ASCII码对照如下:
13---回车
10---换行
49---1

如果输入2,22,222的返回结果我就不打上来了,希望大侠们帮忙解决一下啊..小弟实在迷惑啊!!

MSDN上对Console.Read()的解释如下:

在键入输入字符时,Read 方易做图阻止其返回;该方法在您按 Enter 键时终止。按 Enter 会在输入内容后面追加一个与平台有关的行终止序列(例如,Windows 追加一个回车符和换行符序列)。对 Read 方法的后续调用一次检索输入中的一个字符。检索完最后一个字符后,Read 会再次阻止其返回,并重复上述循环。

注意,只有执行以下操作之一才能获取属性值 -1:同时按修改键 Control 和控制台键 Z (Ctrl+Z),此按键组合发出到达文件尾条件;按发出到达文件尾条件的等效键,例如 Windows 中的 F6 功能键;或者将输入流重定向到具有实际的文件尾字符的源,例如文本文件。

看了后仍有一些不解!




小弟第一次在csdn上发贴..分也不多,所以分有点少..希望大家帮帮忙呀!!!
如果明白的人,请把Read()方法最隐蔽的地方给细说一下!在下感激不尽...



--------------------编程问答-------------------- 你发上来的MSDN解释得很清楚了.
当你按回车时:即13 10
将循环两次,每一次输出13 第二次输出10
当你按1 再回车,即:49 13 10
将循环三次,第一次输出49,而后依次是13 10 --------------------编程问答-------------------- 你要知道,Console.Read()是从输入流中获取下一个字符,
你可以清楚你的键盘输出流中有多少个字符呢?
希望你能理解我上一楼的解释.

如有疑问,请提出 --------------------编程问答-------------------- 那个MSDN的意思你可以这样理解,就是在标准输入流中如果没有字符,即为空时,Console.Read()会阻止其返回,就是停在那里等待你输入,如果标准输入流中有字符,Console.Read()方易做图立刻返回,返回值为标准输入流中的下一个字符的ASCII码,你这个程序就会循环,对吧.当标准输入流中的字符"用完了",那么这个方法就会阻止其返回,等待你输入,也就出现了你程序的现象.

当然,我建议你用Console.ReadKey() --------------------编程问答-------------------- Console.Read()是从输入流中获取下一个字符 --------------------编程问答-------------------- 谢谢大家!
我是用的Console.ReadKey(),只是当我用Console.Read()时出现了问题..所以就提出来了...

当我直接回车时多了一行又应该怎么解释呢?
是不是因为我没有输入字符,它就会停在那里,所以多了一行,然后循环输出回车和换行符的ASSCII码呢?? --------------------编程问答-------------------- 因为你按回车,在标准输入流中就会有两个字符:ASCII为:13 10 --------------------编程问答-------------------- 因为你按回车键就是会产生两个字符:回车+换行...ASCII为 13 10——这叫硬回车...至于为什么...这是标准,前人定的... --------------------编程问答-------------------- 呵呵,还没有注意过这种问题,学习! --------------------编程问答-------------------- 谢谢各位!

我已经搞明白了...结贴了! --------------------编程问答-------------------- 学习了,终于找到答案了
哈哈
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,