CodeGym /课程 /C# SELF /键盘输入

键盘输入

C# SELF
第 2 级, 课程 5
可用

1. 入门

到现在为止,我们写的程序都像收音机:它们只会说话,根本不理你说啥。这样肯定不行啊!大多数程序的目标——就是帮用户做点有用的事。所以经常需要让用户能从键盘输入点东西。

比如说:

  • 计算器等着你输入数字和操作符。
  • 网站表单要你填姓名、邮箱和地址,好处理你的申请。
  • 电脑游戏会问玩家的名字。

今天我们要给我们的应用装个麦克风!或者说耳朵,随你喜欢 :) 准备好了吗?走起!

2. 认识Console.ReadLine()

Console.ReadLine()——这是个函数(或者说“命令”),让程序能拿到用户在键盘上输入的数据。

当程序运行到Console.ReadLine()这行时,程序就会停下来……耐心等着你输入点啥,然后按下Enter。你在按Enter前输入的所有内容都会被当成一行文本。这行文本会返回给程序——就像用户通过窗口递给你一张纸条。

基础例子

// 问下用户名字,然后打个招呼
Console.WriteLine("你叫什么名字?");
string userName = Console.ReadLine(); 				// 这里程序等你输入!

Console.WriteLine("你好, " + userName + "!");

怎么回事:

  • 屏幕上出现:你叫什么名字?
  • 你输入,比如安德烈,然后按Enter。
  • 变量userName拿到"安德烈"这个值。
  • 屏幕上输出:你好, 安德烈!

注意:不管用户输入啥,Console.ReadLine()返回的永远是字符串(类型string)。就算用户输入的是数字,也还是字符串!

3. 例子

来看看Console.ReadLine()实际怎么用。

例子1:输入用户名

Console.WriteLine("请输入你的名字:");
string name = Console.ReadLine();
Console.WriteLine("欢迎, " + name + "!");

例子2:一行里输出结果

用+操作符,你可以直接把文本和输入结果拼一起。

Console.Write("你最喜欢的颜色: ");
string color = Console.ReadLine();
Console.WriteLine("酷!你最喜欢的颜色是 " + color + "。");
注意:

这个例子里用的是Console.Write(没有换行),这样用户输入会紧跟在问题后面。

例子3:连续输入多个内容

来做个小问卷:

Console.Write("你叫什么? ");
string name = Console.ReadLine();

Console.Write("你几岁了? ");
string age = Console.ReadLine(); // 现在还是字符串

Console.WriteLine("你叫 " + name + ",你 " + age + " 岁。");

你会看到:

你叫什么? 维卡
你几岁了? 23
你叫 维卡,你 23 岁。

4. 输入数字数据:类型转换

这里有个新手常踩的坑! Console.ReadLine()永远返回字符串,就算用户输入123。

如果你想拿到数字,得把字符串转成你想要的数字类型(比如int)。C#里可以用转换方法,比如int.Parse()或者Convert.ToInt32()——我们上节课讲过这个。

例子:问年龄

Console.Write("你几岁了? ");
string input = Console.ReadLine();         // input = "27",比如说
int age = int.Parse(input);                // 把"27"字符串转成数字27
Console.WriteLine("一年后你就 " + (age + 1) + " 岁啦");
注意:

如果用户输入的不是数字,程序会报错(FormatException)。以后我们会学更靠谱的写法,但现在这样练习够用了。

5. 你肯定会遇到的错误

忘了转换成数字:

直接把Console.ReadLine()的值当数字用,没转换。

string input = Console.ReadLine();
int sum = input + 5; // 错误!字符串不能和数字直接加。

应该先转成int:

int sum = int.Parse(input) + 5;

忘了声明变量:

name = Console.ReadLine(); // 错误!变量name没声明。

得先声明:string name = Console.ReadLine();

输入和输出顺序搞反了:

新手经常犯很傻的错。其实老手也会,只不过脸不红心不跳 :)

string name = Console.ReadLine();
Console.WriteLine("请输入名字: " + name); // 应该先问,再读输入!

正确顺序:

Console.Write("请输入名字: ");
string name = Console.ReadLine();
Console.WriteLine("你好, " + name);

有用的小提示

就算你用Console.ReadLine()没输出问题(比如直接string x = Console.ReadLine();),程序也会等你输入。但用户根本不知道要输啥!所以一定要用Console.Write()或者Console.WriteLine()给他个明确的提示。

2
任务
C# SELF, 第 2 级, 课程 5
已锁定
用户问候
用户问候
2
任务
C# SELF, 第 2 级, 课程 5
已锁定
带名字的年龄计算器
带名字的年龄计算器
1
调查/小测验
认识 int 和 string 类型第 2 级,课程 5
不可用
认识 int 和 string 类型
认识 int 和 string 类型
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION