C#编程及应用程序开发(第2版)电子课件第五章.ppt

上传人:max****ui 文档编号:11494336 上传时间:2020-04-25 格式:PPT 页数:52 大小:607KB
返回 下载 相关 举报
C#编程及应用程序开发(第2版)电子课件第五章.ppt_第1页
第1页 / 共52页
C#编程及应用程序开发(第2版)电子课件第五章.ppt_第2页
第2页 / 共52页
C#编程及应用程序开发(第2版)电子课件第五章.ppt_第3页
第3页 / 共52页
点击查看更多>>
资源描述
第5章数据的输入和输出,(时间:1.5次课,3学时),第5章数据的输入和输出,输入/输出是程序得以实际应用的必要措施,在程序中实现数据的输入和输出也是每个程序员必须掌握的基本编程技术。在前面各章节的举例中,我们都已经使用了C#语言的部分输入/输出系统,其中用得最多的是.NET类库中Console类的一个方法Console.WriteLine(),这个方法是将在程序中生成的数据或信息输出到控制台(Console)中。另外,程序不光是要向控制台输出数据,还要从控制台读取输入的数据,或者要求输出的数据具有一定的格式。一般说来,数据的输入/输出(I/O)方式有两种:控制台I/O和文件I/O。C#的I/O系统非常庞大,也有控制台I/O和文件I/O两大部分,本章只介绍控制台I/O部分,而文件I/O部分将在后续章节详细介绍。C#的控制台I/O主要是通过命名空间System中的类Console来实现的,该类给出了标准的输入和输出的方法,这些方法可用于从控制台读写字符。本章介绍的内容不是任何C#语法,而是.NET框架中常用的控制台输入/输出的类和方法的使用格式。本章学习重点:掌握在控制台中输入/输出数据的方法掌握输出格式化数据的方法掌握处理字符串的方法,第5章数据的输入和输出,5.1控制台输入5.2控制台输出5.3处理字符串的方法,5.1控制台输入,5.1.1Console.Read()方法5.1.2Console.ReadLine()方法,5.1控制台输入,System.Console类的Read()和ReadLine()方法可用来实现控制台输入,本节我们将详细介绍如何使用这两种方法获取输入。,5.1.1Console.Read()方法,Read()方法每次从输入流(控制台)中读取一个字符,直到收到Enter键才返回。将接收的字符以int型(32位整数)值返回给变量;如果输入流中没有数据,则返回-1。Read()方法是一个静态方法,我们可以直接通过类名Console调用它,调用的格式为Console.Read。Read()方法的原型为:publicstaticintRead()。如果我们输入了多个字符,然后按Enter键(此时输入流中将包含用户输入的字符,加上Enter键和换行符rn),则Read()方法只返回用户输入的第一个字符。但我们可通过对程序的循环控制,多次调用Read()方法来获取所有输入的字符。Read()方法返回给变量的数据的类型是32位整数,如果需要得到输入的字符,则必须通过数据类型显式转换才可以得到相应的字符。,5.1.1Console.Read()方法,【例5.1】Read()方法的使用。usingSystem;classMyRead1publicstaticvoidMain()inta;charch;Console.Write(请从键盘输入一个字符:);a=Console.Read();/程序运行到Read方法会暂停,直到用户在控制台中按任意键ch=(char)a;/显式类型转换Console.WriteLine(a);Console.WriteLine(ch);程序运行结果:请从键盘输入一个字符:a(回车)97a,5.1.1Console.Read()方法,【例5.2】通过Read()方法从控制台接收用户输入的一系列字符,然后把用户输入的内容显示出来。usingSystem;classMyRead2publicstaticvoidMain(stringargs)stringbuf;Console.Write(请输入字符串(按Enter键接收输入,按x键退出程序):);buf=;while(true)intc=Console.Read();/接收一个字符if(char)c=x在本程序中,可以一次输入单个字符,也可以一次输入多个字符。当按下x或X键再按下Enter键后将会退出本程序。,5.1.2Console.ReadLine()方法,ReadLine()方法用于从控制台中一次读取一行字符串,直到遇到Enter键才返回读取的字符串。但此字符串中不包含Enter键和换行符(rn)。如果没有收到任何输入,或接收了无效的输入,那么ReadLine()方法将返回null。ReadLine()方法也是一个静态方法,可以直接通过类名Console来调用它,调用的格式为Console.ReadLine。ReadLine()方法的原型为:publicstaticstringReadLine(),5.1.2Console.ReadLine()方法,【例5.3】使用ReadLine()方法。usingSystem;classMyReadlinepublicstaticvoidMain()inti;stringstr;Console.Write(请输入你的姓名:);str=Console.ReadLine();Console.Write(用户的姓名为:);Console.WriteLine(str);程序的运行结果:请输入你的姓名:王红(回车)用户的姓名为:王红,5.2控制台输出,5.2.1数据的格式化5.2.2格式化说明符,5.2控制台输出,在前述的各章节中,我们同样也多次使用了Console类的Write()和WriteLine()方法来输出程序的计算结果。日常生活中,有时我们不仅仅要求程序简单地输出数据,还要求能输出具有一定格式的数据,以丰富我们应用程序的应用需求。,5.2.1数据的格式化,在日常生活中,各行各业的数据表示形式有多种。例如,一个十进制数字965840,可能有以下表示形式:表示人民币:¥9,658.40表示美元:9,658.40用于科学计算:9.65840105,在C#中表示为9.65840E5可见,对于一个程序来说,它的计算结果只是一个无任何语义的数字。所以如果希望一个应用程序的计算结果在输出时能反映出它的应用特征,则必须在程序的输出语句中给出所需数据格式的转换控制。C#语言具有将数字在不同的表示形式之间相互转换的功能数据的格式化。数据的格式化是指通过程序(方法),将数据的表现形式转换为一定样式的过程。C#语言是通过.NET类库方法、格式化字符串以及其他的控制信息共同完成的。,5.2.1数据的格式化,一般实现把数字转换为指定格式的字符串输出的基本方式有3种:Write()和WriteLine()方法可以直接把数值类型变量的值,转换成字符串输出到控制台中,并可使用格式说明符来控制输出的数据格式。Write()方法用来向控制台输出一条信息,并且光标仍在输出信息的末尾。一般Write()方法中有以下两种常用的形式:publicstaticvoidWrite(数值数据类型变量);/直接输出变量的值publicstaticvoidWrite(N,M:Yn,变量1,变量2);其中:N表示输出变量的序号。N为0对应输出的第1个变量,N为1则对应输出的第2个变量,依次类推。,M可选项。M表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该数字为正数,则输出按照右对齐的方式。:Yn可选项。其中Y是格式化字符串,它指的是数据的输出格式说明符,将在5.2.2节中给出。n为一个正整数。表示了数据的精度范围(有效数字范围),它用于控制当前数据在格式化后表现出来的有效数字个数。例如:inta=32767;doubled=456.56789;Console.Write(a=0 x0,8:Xtd=1,10:F3,a,d);Console.Write(a=0 x0,-8:Xtd=1,-10:F3,a,d);输出结果:a=0 x7fffd=456.568a=0 x7fffd=456.568本例中的格式说明符X和F在5.2.2节中给出说明。,5.2.1数据的格式化,WriteLine()方法用来向控制台产生一行信息,并在信息的尾部自动添加“rn”操作符,即输出信息后光标自动移到下一新行。同Write()方法类似,WriteLine方法有以下两种常用的形式:publicstaticvoidWriteLine(数值数据类型变量);publicstaticvoidWriteLine(N,M:Y,变量1,变量2);WriteLine()方法的参数与Write()方法的参数意义一样。例如:inta=32767;doubled=456.56789;Console.WriteLine(a=0 x0,8:Xtd=1,10:F3,a,d);Console.WriteLine(a=0 x0,-8:Xtd=1,-10:F3,a,d);输出结果:a=0 x7fffd=456.568a=0 x7fffd=456.568可见此例输出结果与Write()方法不同的是每一个WriteLine()方法输出一行信息后自动换行。,5.2.1数据的格式化,调用ToString方法中使用格式说明符。ToString方法是System.Object类中的一个方法,此方法可以将变量的值转换为由数字、数学符号等组成的字符串。由于所有的类都是从Object类中派生出来的,因此,所有的对象都可以使用ToString方法,例如各种基本数据类型(int32、int64)等。ToString方法的调用格式为:类对象名称.ToString(“格式说明符”)例如:intvar=8769;stringstr=var.ToString(C);/使用ToString()方法,将整型数转换为金额格式表示输出结果将是:¥8,769.00其中格式说明符C是用于金额的格式说明符,我们将在5.2.2节中介绍。调用String类的Format静态方法。Format()方法可用于将信息格式化为一个新的字符串。由于Format()方法是静态的,因此可以以String.Format的方式直接调用。Format方法常用的使用格式:stringstr=String.Format(N,M:Yn,变量1,变量2,.);其中:str是格式化后得到的字符串;其他的参数与Write和WriteLine方法中的参数相同。Format()方法还有两种使用格式可参阅MSDN文档。,5.2.1数据的格式化,【例5.4】基本的格式化方法。usingSystem;classMyFormatpublicstaticvoidMain()inta=34567;Console.WriteLine(使用WriteLine格式化数据:);Console.WriteLine(n0:Cn0:C4,a);Console.WriteLine(n0:Fn0:F4,a);Console.WriteLine(使用ToString格式化数据:);stringstr1=a.ToString(c);stringstr2=a.ToString(c3);Console.WriteLine(str1);Console.WriteLine(str2);Console.WriteLine(使用String.Format格式化数据:);stringstr4=String.Format(我们也能使用String.Format格式化数据:);stringstr5=String.Format(n0:cn0:c0,a);Console.WriteLine(str4);Console.WriteLine(str5);,5.2.1数据的格式化,程序运行结果:使用WriteLine格式化数据:¥34,567.00¥34,567.000034567.0034567.0000使用ToString格式化数据:¥34,567.00¥34,567.000使用String.Format格式化数据:¥34,567.00我们也能使用String.Format格式化数据:¥34,567在本例中将变量a中的数字格式化为金额、小数,其中的说明符将在5.2.2节中详细介绍。,5.2.2格式化说明符,.NET框架体系规定可以使用两种格式进行数据的格式化:一种是由系统定义的标准格式,另一种是用户自定义格式。这两种格式主要包含了各种用于格式化数据的格式控制字符,使用这些控制字符组成所需的数据格式,然后由5.2.1节中所述3种格式化方式即可实现数据的格式化了。1.标准格式说明符标准格式说明符定义了人们常用的8种数据表示形式,如表5.1所示。,5.2.2格式化说明符,表5.1标准格式说明符,5.2.2格式化说明符,标准格式的一般形式是:N,M:Yn其中:N表示输出变量的序号。N为0对应输出的第1个变量,N为1则对应输出的第2个变量,依次类推。,M是可选项。M表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该数字为正数,则输出按照右对齐的方式。:Yn是可选项。Y是格式化说明符,它指的是数据的输出格式说明符(如表5.1所示),这些字符是由系统定义的,它们基本涵盖了.NET框架定义的所有数值类型数据的表现形式。n为一个正整数,表示了数据的精度范围(有效数字范围),它用于控制当前数据在格式化后表现出来的有效数字个数。货币金额格式字符“C或c”用来组成将数据转换为货币金额格式的字串,在字符“C或c”后面的数字定义了货币金额数据小数点后保留的数字个数,如果没有定义任何数字,则默认小数点后保留2位数字。例如:inta=123456;doubled=1234.5678;stringstr1=String.Format(0:c,a);/得到的字串是¥123,456.00stringstr2=String.Format(0:c,d);/得到的字串是¥1,234.57stringstr3=String.Format(0:c4,a);/得到的字串是¥123,456.0000stringstr4=String.Format(0:c4,d);/得到的字串是¥1,234.5678stringstr5=d.ToString(c);/得到的字串是¥1,234.57stringstr6=d.ToString(c4);/得到的字串是¥1,234.5678,5.2.2格式化说明符,提示:所显示的货币金额符号同用户使用的操作系统有关,如果本例在Windows2000Professional英文版中运行,则结果中显示的货币符号是;如果我们使用的是中文版操作系统,则将会显示的货币符号可能就是¥。,5.2.2格式化说明符,整数数据格式字符“D或d”用来组成将数据表示为十进制整数数据的格式化字符串。字符“D或d”后面的数字规定了要表示的数据位数,如果这个数字小于整数数据的位数,则显示所有的整数位;如果这个数字大于整数数据的位数,则在整数数据的前面用数字“0”补足所有的位数。例如:inta=123456;stringstr1=String.Format(0:d,a);/得到的字串是123456stringstr2=String.Format(0:d6,a);/得到的字串是123456stringstr3=String.Format(0:d7,a);/得到的字串是0123456stringstr4=a.ToString(d);/得到的字串是123456stringstr5=a.ToString(d7);/得到的字串是0123456科学计数法格式字符“E或e”用来将数据转换为科学计数法形式。在字符“E或e”后面的数字用来规定科学计数法表示数据的小数点后数字的个数。如字符“E或e”后面没有数字,则显示7位有效数字。例如:inta=123456;doubled=1234.5678;stringstr1=String.Format(0:e,a);/得到的字串是1.234560e+005stringstr2=String.Format(0:e,d);/得到的字串是1.234568e+003stringstr3=String.Format(0:e4,a);/得到的字串是1.2346e+005stringstr4=String.Format(0e4,d);/得到的字串是1.2346e+003stringstr5=a.ToString(E);/得到的字串是1.234560E+005stringstr6=d.ToString(E4);/得到的字串是1.2346E+003浮点数据格式字符“F或f”用来描述带有小数点的数据的显示形式。字符“F或f”后面的数字规定了小数点后的数据位数。如果没有指定数字,则数据默认保留两位小数,如果指定的数字大于数据本身小数部分的位数,则在小数部分数字的最后补“0”。,5.2.2格式化说明符,自然数据格式字符“N或n”用来表示自然数据格式。这种数据格式将数据格式化成带逗号和小数点,即表示为“dd,ddd,ddd.dd”的形式。这种数字分组的表示形式多用于一些正规的场合,便于直观了解数据的大小量级。字符“N或n”后面的数字规定了数据格式中小数点后面的数字个数。inta=123456;doubled=1234.5678;stringstr1=String.Format(0:n,a);/得到的字串是123,456.00stringstr2=String.Format(0:n,d);/得到的字串是1,234.57stringstr3=a.ToString(n4);/得到的字串是123,456.0000stringstr4=d.ToString(n4);/得到的字串是1,234.5678十六进制数据格式字符“X或x”用于将数据表示为十六进制格式。字符“X或x”后面的数字表示了格式化数据的数字个数,其规定与整数数据格式类似。例如:inta=123456;stringstr1=String.Format(0:x,a);/得到的字串是1e240stringstr2=a.ToString(x5);/得到的字串是1e240stringstr3=a.ToString(x6);/得到的字串是01e240stringstr4=a.ToString(x7);/得到的字串是001e240保持精度(来回转换)将数字从一种格式转换为另一种格式时,可能会降低精度。字符“R或r”用于将字符串转换为数字是保持其精度。使用该格式说明符后,运行时环境将尽可能保持原有数字的精度。,5.2.2格式化说明符,2.自定义数字格式说明符有时候,需要更精确地按某种意图控制数字的格式,比如格式化驾驶证号或社会保险号时,可能想加入短划线;而对于电话号码,则想加入括号和短划线等,这时就需要使用一些自定义的格式说明符来实现所需的数据格式。表5.2所示为自定义数据格式说明符。,5.2.2格式化说明符,表5.2自定义数据格式说明符,5.2.2格式化说明符,【例5.5】使用自定义说明符显示特殊数据格式(用WriteLine()方法实现输出)。usingSystem;usingSystem.Globalization;classCustomFormat1publicstaticvoidMain()inta=1234;floatb=12.34f;/0格式化说明符Console.WriteLine(n0格式化说明符:);Console.WriteLine(00:0000000,a);Console.WriteLine(00:0000000,b);/#格式化说明符Console.WriteLine(n#格式化说明符:);Console.WriteLine(00:0#,a);Console.WriteLine(00:0#,b);/,格式化说明符Console.WriteLine(n,格式化说明符:);Console.WriteLine(00:0,1000000);/,用作倍增器Console.WriteLine(00:#,#,#0,2000000);/,用作分隔符Console.WriteLine(00:#,#,#0,3);/%格式化说明符Console.WriteLine(n%格式化说明符:);Console.WriteLine(00:0%,a);/将原数乘100%Console.WriteLine(00:0%,b);/单引号格式化说明符Console.WriteLine(n单引号格式化说明符:);Console.WriteLine(00:mynumberis:0,a);Console.WriteLine(00:mynumberis:0,b);Console.WriteLine(00:mine:0,a);Console.WriteLine(00:mine:0,b);,5.2.2格式化说明符,程序的执行结果:0格式化说明符:1234000123412.340000012#格式化说明符:12340123412.3400012,格式化说明符:1000000120000002,000,00033%格式化说明符:1234123400%12.341234%单引号格式化说明符:1234mynumberis:123412.34mynumberis:121234mine:123412.34mine:12,5.2.2格式化说明符,【例5.6】使用for循环创建一个负数,然后将其递增为0和正数。并且可以使用同一个WriteLine来显示它们。本例将给出3种不同的情况。usingSystem;classCustomFormat2publicstaticvoidMain()Console.WriteLine(n第一种情况);for(intx=-100;x=100;x+=100)Console.WriteLine(0:000;-00000;0,x);Console.WriteLine(n第二种情况);for(intx=-100;x=100;x+=100)Console.WriteLine(0:正数:0;负数:-0;零:0,x);Console.WriteLine(n第三种情况);for(intx=-100;xUseConvert请输入您的年龄:40你是21岁或已超过21岁。后年你的年龄是:42d:UseConvert请输入您的年龄:99999999999youenteredanumberthatistoobigortoosmall.d:UseConvert请输入您的年龄:abcyoudidntenteravalidnumber,Q&A?Thanks!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!