C#编程语言的交流方式
对话的窗口为控制台应用程序 所以我们创建的C#项目类型为控制台应用程序
控制台是?
输出语句(电脑显示的内容)
Console.Write(); // 输出()内的数据
Console.WriteLine(); // 输出()内的数据并换行
我们可以输出哪些数据?
变量的值:
int num = 1;
Console.Write(num); // 当()内为变量名时 输出变量的值
所有类型变量都可以吗?
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(g);
Console.WriteLine(h);
Console.WriteLine(i);
感觉太麻烦了 难道只能一个一个输出吗
* 输出的内容有统一的格式——字符串string
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine("{0}{1}{2}{3}{4}{5}{6}{7}{8}", a, b, c, d, e, f, g, h, i);
*由于输出的内容是字符串格式 所以在()内用“”包含要输出的内容
{}占位 可理解为排队的位置
{}内的数字 有点像拿的排队的序号
序号从0开始并依次递增,与“”后的变量位置一一对应
如上图所示0对应a、1对应b、2对应c……
我们抵制插队但总有人帮忙带货 所以
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine("{0}{1}{2}{0}{3}{4}{0}{5}{6}{0}{7}{8}", a, b, c, d, e, f, g, h, i);
如上图所示 当序号在“”内重复时 对应位置的变量的值也会重复输出
感觉数字太多 脑子太乱
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine($"{a}{b}{c}{d}{e}{f}{g}{h}{i}");
当在“”前添加$符号时 {}内可以填写变量名完成对变量值的输出
在输出时也可用到转义字符
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine($"{a}\n{b}\n{c}\n{d}\n{e}\n{f}\n{g}\n{h}\n{i}");
也也可通过@取消转义字符的使用
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5.0f;
double f = 6.0;
decimal g = 7.0m;
char h = '8';
bool i = true;
Console.WriteLine($@"{a}\n{b}\n{c}\n{d}\n{e}\n{f}\n{g}\n{h}\n{i}");
输入语句
Console.Read(); // 获取一个字符 由于Unicode编码 结果为int类型
Console.ReadKey(); // 获取用户按下的按键或功能键 不能被获取 用于控制台显示
Console.ReadLine(); // 获取一行字符 结果为string类型
int i;
i = Console.Read();
Console.WriteLine(i);
string i;
i = Console.ReadLine();
Console.WriteLine(i);
转换类型 将获取的字符串存入其他类型变量中
Console.WriteLine("请输入一个数:");
int num;
string s = Console.ReadLine();
num = int.Parse(s);
Console.WriteLine("num = {0}", num);
类型转换分为显式类型转换和隐式类型转换
隐式类型转换(系统自动完成)
1、同一存储类型下的小范围类型转大范围类型
2、目标类型精度大于源类型
int a = 3;
long l = a; // 小范围转大范围
double d = a; // 小精度转大精度
显式转换(标记完成)
double a = 3;
int i = (int)a; // 大精度转小精度
Console.WriteLine(i);
long l = 4;
i = (int)l; // 大范围转小范围
Console.WriteLine(i);
string s = "9.8";
a = double.Parse(s); // 将()内字符串s转换为double类型 再赋值给a
// 字符串s必须只能是由数字字符组成的字符串
i = Convert.TOInt16(a); // 将()内的变量a转换为16位长度的int类型 再赋值给i
// a是可以转换为i的类型
Console.WriteLine($"a = {a}\ni = {i}");
*在显式类型转换的过程中 容易出现数值的丢失 比如精度及大小
浮点型转整数类型 值遵守四舍五入的原则
练习题:根据输入矩形的长宽输出其面积
Console.WriteLine("请输入矩形的长:");
int l = int.Parse(Console.ReadLine());
Console.WriteLine("请输入矩形的宽:");
int w = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("长为{0},宽为{1}的矩形面积为{2}", l, w, l * w);