当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

在控制台应用程序中输出格式化数据

8/14/2018 10:24:57 PM 人评论

在控制台应用程序的Console.Write方法和Console.WriteLine方法的参数中,可以直接定义数据转换为字符串后的输出格式。常用形式为Console.WriteLine("格式化表示", 参数序列);


在控制台应用程序的Console.Write方法和Console.WriteLine方法的参数中,可以直接定义数据转换为字符串后的输出格式。常用形式为

Console.WriteLine("格式化表示", 参数序列);

或者

Console.Write("格式化表示", 参数序列);

带下画线的斜体字表示需要用具体内容替换。例如:

int x=10, y=20, z=30;

Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, x+y+z); //输出10+20+30=60

Console.WriteLine("{3}={1}+{2}+{0}", x, y, z, x+y+z); //输出60=20+30+10

1.格式化表示的一般形式

使用格式化表示时,用“{”和“}”将格式与其他输出字符区分开。一般形式为:

{N [, M][:格式码]}

格式中的中括号表示其内容为可选项。

假如参数序列为x、y、z,格式中的含义如下。

● N:指定参数序列中的输出序号。例如{0}表示x,{1}表示y,{2}表示z。

● M:指定参数输出的最小长度,如果参数的长度小于M,就用空格填充;如果大于等于M,则按实际长度输出;如果M为负,则左对齐;如果M为正,则右对齐;如果未指定M,默认为零。例如{1,5}表示将参数y的值转换为字符串后按5位右对齐输出。

● 格式码:为可选的格式化代码字符串。例如{1:00000}的输出结果为 00020,含义是将参数y按5位数字输出,不够5位左边补零,超过5位按实际位数输出。

表1-1列出了常用的格式码及其用法示例。

表1-1 常用格式码

在控制台应用程序中输出格式化数据

在控制台应用程序中输出格式化数据


在格式化表示形式中,有两个特殊的用法:

● 如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,例如“{{、}}”。

● 如果希望格式中的字符或字符串包含与格式符相同的字符,但是又希望让其原样显示时,可以用单引号将其括起来。

2.利用string.Format方法格式化字符串

也可以利用string.Format方法将某种类型的数据按照希望的格式转换为对应的字符串,该方法既可以在控制台应用程序中使用,也可以在其他应用程序中使用。例如:

int i = 123;

string s = string.Format("{0:d6}", i);  //d6表示不够6位左边补零

Console.WriteLine(s);      //结果为000123

double j = 123.45;

//下面的{0,-7}表示第0个参数左对齐,占7位,不够7位右边补空格

// {1,7}表示第1个参数右对齐,占7位,不够7位左边补空格

string s2 = string.Format("i:{0,-7}, j:{1,7}", i, j);

Console.WriteLine(s2); //结果i:123 ,j: 123.45

string s3 = string.Format("{0:###,###.00}", i);

Console.WriteLine(s3); //结果12.00

int num = 0;

string s4 = string.Format("{0:###}", num);

Console.WriteLine(s4); //结果输出长度为0的空字符串

3.利用ToString方法格式化字符串

如果是一个变量,使用ToString方法更简单。例如:

int n1 = 12;

string s1 = n1.ToString("X4"); //X格式表示用十六进制输出。结果为:000C

string s2 = n1.ToString("d5"); //结果:00012

不论是控制台应用程序,还是 WinForm 应用程序、WPF 应用程序,或是其他类型的应用程序,都可以利用string.Format方法或者ToString方法定义数据的格式。

4.控制台应用程序示例

下面通过例子说明控制台应用程序的基本设计方法。

【例 1-1】演示控制台应用程序的基本设计方法,以及如何在一个解决方案中包含多个应用程序项目。

该例子的功能是让用户从键盘输入任意两个整数 x 和 y,程序自动计算这两个数的乘积(z = x*y),并将计算结果 z 在屏幕上显示出来。这个例子虽然非常简单,但却能让我们快速了解基本的应用程序编程思路和方法。

(1)运行 VS2012,单击【新建项目】按钮,在弹出的窗体中,选择【控制台应用程序】模板,将【名称】改为 ConsoleExamples ,将【位置】改为希望存放的文件夹位置(本例子为E:\V3CSharp\ch01),将【解决方案名称】改为ch01,如图1-2所示。单击【确定】按钮。

创建控制台应用程序项目


图1-2 创建控制台应用程序项目

(2)观察【解决方案资源管理器】中的项目组织,此时会发现在 ch01 解决方案下有一个ConsoleExamples项目。

(3)将Program.cs的Main方法改为下面的代码。

static void Main(string[] args)

{

Console.Write("请输入x和y(例如12,15),然后按回车键:");

string s = Console.ReadLine();

string[] a = s.Split(',');

int x = int.Parse(a[0]);

int y = int.Parse(a[1]);

int z = x * y;

Console.WriteLine("x*y={0}", z);

Console.WriteLine("请按任意键结束程序。");

Console.ReadKey();

}

当然,该例子目前的实现代码有很多缺陷,比如,没有对输入数据的格式和合法性进行检查,没有对数据转换失败的异常情况进行处理等。在后面的章节中,我们还会逐步学习解决这些问题的办法。

(4)按<F5>键调试运行,效果如图1-3所示。

0007.jpg

图1-3 例1-1的运行效果

(5)按任意键结束程序运行,然后退出 VS2012 开发环境,观察解决方案文件夹下生成的所有文件和子目录,以及子目录下包含的文件。

此时可发现在ch01子目录下,有一个ch01.sln文件,以后需要再次打开这个解决方案时,双击该文件即可。

备份项目时,应该将解决方案文件夹下的所有文件和子目录全部复制到U盘或者移动硬盘中,不能只复制其中的一部分文件,否则将无法正常打开该解决方案。

(6)观察bin\Debug子目录下的文件,可发现在该文件夹下有一个ConsoleExamples.exe文件,这就是项目生成的可执行文件。

(7)将ConsoleExamples.exe文件复制到其他文件夹,如复制到桌面上,双击该文件再次运行观察结果。这一步的目的是为了让读者明白,安装到用户机器上时实际上只需要这一个可执行文件即可,其他都是帮助调试用的文件。

实际发布项目时,一般不再使用调试方式,而是通过修改快捷工具栏中的解决方案配置,将其生成到bin\release子目录下。

下面我们将其改为在DLL文件中实现运算。

(8)双击ch01.sln打开解决方案。

(9)在【解决方案资源管理器】中,鼠标右击解决方案名,选择【添加】→【新建项目】命令,在弹出的窗体中,选择【类库】模板,将【名称】改为ClassLibraryExample,然后单击【确定】按钮。

(10)在“解决方案资源管理器”中,将 Class1.cs 换名为 MyClass.cs,然后将代码改为下面的内容。

namespace ClassLibraryExample

{

public class MyClass

{

public int Multiplication(int x, int y)

{

int z = x * y;

return z;

}

}

}

(11)鼠标右击解决方案名,选择“重新生成解决方案”,此时在ClassLibraryExample项目的bin\Debug文件夹下即生成了ClassLibraryExample.dll文件。

(12)在【解决方案资源管理器】中,鼠标右击ConsoleExamples项目,在快捷菜单中选择【项目依赖项】命令,在弹出的对话框中,勾选ClassLibraryExample选项,单击【确定】按钮。

(13)鼠标右击 ConsoleExamples 项目的【引用】,选择【添加引用】命令,在弹出的对话框中,勾选ClassLibraryExample选项,单击【确定】按钮。

(14)将Main 方法的int z = x * y;用下面的语句替换。

int z = ClassLibraryExample.MyClass.Multiplication(x, y);

(15)按<F5>键运行应用程序,观察运行效果。

(16)再次观察ConsoleExamples项目目录下的bin\Debug子目录下的文件,此时会发现该子目录下既有ConsoleExamples.exe文件,又有ClassLibraryExample.dll文件。

到此,我们了解了用C#调用DLL文件的基本用法。

如果读者学过C++或者Java语言,还可以比较一下C#与这些语言编写的程序有哪些相似和不同之处,从而对C#编程有一个直观的感性认识。

相关教程

共有条评论 网友评论

验证码: 看不清楚?