Skip to main content

3.Console.ReadLine()

3.Console.ReadLine()

详解 Console.ReadLine() 的用法(基础版)

📌 一、用途

主要用于从控制台读取一行文本输入

  1. 获取用户输入 - 接收字符串、数字等各种输入
  2. 数据录入 - 表单填写、信息收集
  3. 交互对话 - 问答式程序
  4. 配置输入 - 程序设置、参数输入

📝 二、语法

基本语法

// 方式1:最常用,获取输入字符串
string input = Console.ReadLine();

// 方式2:配合提示信息使用
Console.Write("请输入姓名:");
string name = Console.ReadLine();

特点:

  • 等待用户按下回车键
  • 返回用户输入的整行文本(不包括回车符)
  • 输入为空时返回空字符串(""),不是 null

🔧 三、参数

Console.ReadLine() 没有参数

这是一个无参数的方法,直接调用即可。

📤 四、返回值

返回值类型

string result = Console.ReadLine();

可能的返回值:

// 用户输入 "Hello" 后按回车
string input = Console.ReadLine(); // input = "Hello"

// 用户直接按回车(不输入任何内容)
string input = Console.ReadLine(); // input = ""(空字符串)

// 用户输入 "123" 后按回车
string input = Console.ReadLine(); // input = "123"

重要特性:

// 1. 总是返回 string 类型
// 2. 如果只需要回车前的文本,不包括换行符
// 3. 空输入返回 "" 而不是 null
// 4. 如果输入包含空格,会完整包含空格

🎯 五、不同用法示例(基础版)

示例1:最简单的输入输出

static void Example1_BasicInput()
{
Console.WriteLine("=== 简单的输入输出 ===");

// 获取用户输入
Console.Write("请输入你的名字:");
string name = Console.ReadLine();

// 使用输入
Console.WriteLine($"你好,{name}!");
Console.WriteLine($"你的名字有 {name.Length} 个字");
}

示例2:获取数字并进行计算

static void Example2_NumberInput()
{
Console.WriteLine("=== 简单的加法计算器 ===");

// 获取第一个数字
Console.Write("请输入第一个数字:");
string input1 = Console.ReadLine();
int num1 = Convert.ToInt32(input1); // 字符串转整数

// 获取第二个数字
Console.Write("请输入第二个数字:");
string input2 = Console.ReadLine();
int num2 = Convert.ToInt32(input2);

// 计算并显示结果
int sum = num1 + num2;
Console.WriteLine($"{num1} + {num2} = {sum}");
}

示例3:用户注册信息收集

static void Example3_UserRegistration()
{
Console.WriteLine("=== 用户注册 ===");

// 收集多个信息
Console.Write("用户名:");
string username = Console.ReadLine();

Console.Write("年龄:");
string ageStr = Console.ReadLine();
int age = Convert.ToInt32(ageStr);

Console.Write("城市:");
string city = Console.ReadLine();

Console.Write("邮箱:");
string email = Console.ReadLine();

// 显示注册信息
Console.WriteLine("\n=== 注册信息确认 ===");
Console.WriteLine($"用户名:{username}");
Console.WriteLine($"年龄:{age}");
Console.WriteLine($"城市:{city}");
Console.WriteLine($"邮箱:{email}");
Console.WriteLine("注册完成!");
}

示例4:选择题问答

static void Example4_Quiz()
{
Console.WriteLine("=== 知识问答 ===");

// 第一题
Console.WriteLine("1. 中国的首都是?");
Console.Write("你的答案:");
string answer1 = Console.ReadLine();

// 第二题
Console.WriteLine("\n2. 1 + 1 = ?");
Console.Write("你的答案:");
string answer2 = Console.ReadLine();

// 第三题
Console.WriteLine("\n3. 你喜欢编程吗?");
Console.Write("你的答案:");
string answer3 = Console.ReadLine();

// 显示所有答案
Console.WriteLine("\n=== 你的答案 ===");
Console.WriteLine($"1. {answer1}");
Console.WriteLine($"2. {answer2}");
Console.WriteLine($"3. {answer3}");
}

示例5:简单登录系统

static void Example5_LoginSystem()
{
Console.WriteLine("=== 用户登录 ===");

// 预设的用户名和密码
string correctUsername = "admin";
string correctPassword = "123456";

// 获取用户名
Console.Write("用户名:");
string username = Console.ReadLine();

// 获取密码
Console.Write("密码:");
string password = Console.ReadLine();

// 验证登录
if (username == correctUsername && password == correctPassword)
{
Console.WriteLine("登录成功!");
}
else
{
Console.WriteLine("用户名或密码错误!");
}
}

示例6:故事生成器

static void Example6_StoryGenerator()
{
Console.WriteLine("=== 故事生成器 ===");

// 收集故事要素
Console.Write("输入一个名字:");
string name = Console.ReadLine();

Console.Write("输入一个地方:");
string place = Console.ReadLine();

Console.Write("输入一个物品:");
string item = Console.ReadLine();

Console.Write("输入一个动作(如:跑步、唱歌):");
string action = Console.ReadLine();

Console.Write("输入一个形容词(如:快乐的、可怕的):");
string adjective = Console.ReadLine();

// 生成故事
Console.WriteLine("\n=== 你的故事 ===");
Console.WriteLine($"从前有一个{adjective}的人,名叫{name}。");
Console.WriteLine($"有一天,{name}去了{place}。");
Console.WriteLine($"在那里,{name}发现了一个{item}。");
Console.WriteLine($"于是,{name}开始{action}。");
Console.WriteLine("故事结束!");
}

示例7:购物清单

static void Example7_ShoppingList()
{
Console.WriteLine("=== 购物清单创建 ===");
Console.WriteLine("请输入要购买的商品(输入'完成'结束)");

List<string> shoppingList = new List<string>();
string item = "";

while (true)
{
Console.Write($"商品 {shoppingList.Count + 1}: ");
item = Console.ReadLine();

if (item.ToLower() == "完成")
{
break;
}

shoppingList.Add(item);
}

// 显示购物清单
Console.WriteLine("\n=== 你的购物清单 ===");
for (int i = 0; i < shoppingList.Count; i++)
{
Console.WriteLine($"{i + 1}. {shoppingList[i]}");
}
Console.WriteLine($"总计:{shoppingList.Count} 件商品");
}

示例8:温度转换器

static void Example8_TemperatureConverter()
{
Console.WriteLine("=== 温度转换器 ===");
Console.WriteLine("1. 摄氏度转华氏度");
Console.WriteLine("2. 华氏度转摄氏度");

Console.Write("请选择转换方式 (1或2): ");
string choice = Console.ReadLine();

Console.Write("请输入温度值: ");
string tempStr = Console.ReadLine();
double temperature = Convert.ToDouble(tempStr);

if (choice == "1")
{
// 摄氏度转华氏度
double fahrenheit = temperature * 9 / 5 + 32;
Console.WriteLine($"{temperature}°C = {fahrenheit:F1}°F");
}
else if (choice == "2")
{
// 华氏度转摄氏度
double celsius = (temperature - 32) * 5 / 9;
Console.WriteLine($"{temperature}°F = {celsius:F1}°C");
}
else
{
Console.WriteLine("无效选择!");
}
}

📚 六、练习题(由易到难)

练习1:问候程序

// 编写一个程序,要求:
// 1. 询问用户姓名
// 2. 询问用户年龄
// 3. 询问用户城市
// 4. 显示:你好 [姓名],你 [年龄] 岁,来自 [城市]

练习2:简单的计算器

// 编写一个程序,要求:
// 1. 输入第一个数字
// 2. 输入运算符(+、-、*、/)
// 3. 输入第二个数字
// 4. 显示计算结果
// 示例:
// 请输入第一个数字:10
// 请输入运算符:+
// 请输入第二个数字:5
// 结果:10 + 5 = 15

练习3:BMI计算器

// 编写BMI计算程序:
// BMI = 体重(kg) / (身高(m) * 身高(m))
// 1. 输入身高(米)
// 2. 输入体重(公斤)
// 3. 计算并显示BMI
// 4. 给出健康建议(<18.5偏瘦,18.5-24正常,>24偏胖)

练习4:成绩计算器

// 编写程序计算平均成绩:
// 1. 询问学生姓名
// 2. 输入语文成绩
// 3. 输入数学成绩
// 4. 输入英语成绩
// 5. 计算平均分
// 6. 显示:学生 [姓名] 的平均成绩是 [平均分]

练习5:倒序输出

// 编写程序:
// 1. 输入一个句子
// 2. 将句子倒序输出
// 3. 统计句子中的单词数
// 示例:
// 输入:我喜欢编程
// 输出:程编欢喜我
// 单词数:4

练习6:猜数字游戏

// 编写猜数字游戏:
// 1. 程序随机生成1-100的数字
// 2. 用户输入猜测的数字
// 3. 提示太大/太小
// 4. 直到猜中为止
// 5. 显示猜的次数

练习7:简易日记本

// 编写简易日记本:
// 1. 询问日记日期(格式:2024-01-01)
// 2. 输入日记内容(多行,输入"结束"完成)
// 3. 显示日记摘要
// 示例:
// 日期:2024-01-01
// 内容:今天天气很好...
// 摘要:[2024-01-01] 今天天气很好...

练习8:通讯录管理

// 编写简易通讯录:
// 1. 可以添加联系人(姓名、电话)
// 2. 可以查看所有联系人
// 3. 可以搜索联系人
// 菜单:
// 1. 添加联系人
// 2. 查看所有联系人
// 3. 搜索联系人
// 4. 退出

💡 重要技巧和注意事项

1. 输入验证

// 总是验证用户输入
Console.Write("请输入年龄:");
string input = Console.ReadLine();

// 方法1:使用 TryParse 验证数字
if (int.TryParse(input, out int age))
{
Console.WriteLine($"你的年龄是:{age}");
}
else
{
Console.WriteLine("请输入有效的数字!");
}

// 方法2:检查空输入
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("输入不能为空!");
}

2. 类型转换

// 字符串转整数
int num = Convert.ToInt32(Console.ReadLine());
int num2 = int.Parse(Console.ReadLine());

// 字符串转小数
double price = Convert.ToDouble(Console.ReadLine());
float weight = float.Parse(Console.ReadLine());

// 字符串转布尔值
bool isTrue = Convert.ToBoolean(Console.ReadLine());

3. 处理多个输入

// 一次获取多个值(用空格分隔)
Console.Write("输入姓名和年龄(用空格分隔):");
string input = Console.ReadLine();
string[] parts = input.Split(' ');

if (parts.Length == 2)
{
string name = parts[0];
int age = Convert.ToInt32(parts[1]);
Console.WriteLine($"姓名:{name},年龄:{age}");
}

4. 常见问题

// 问题1:ReadLine() 会读取整行,包括空格
string input = Console.ReadLine(); // 输入 "hello world"
Console.WriteLine(input); // 输出 "hello world"(包含空格)

// 问题2:需要按回车键
// ReadLine() 会一直等待,直到用户按回车

// 问题3:空输入
string input = Console.ReadLine();
if (input == "") // 检查空字符串
{
Console.WriteLine("你没有输入任何内容");
}

// 问题4:大小写敏感
string answer = Console.ReadLine();
if (answer.ToLower() == "yes") // 转为小写比较
{
// 处理 Yes、YES、yes 等情况
}

⚠️ 注意事项总结

  1. 总是验证输入 - 用户可能输入错误的数据
  2. 处理空输入 - 用户可能直接按回车
  3. 类型转换注意 - 字符串转数字可能失败
  4. 注意大小写 - 字符串比较是大小写敏感的
  5. 包含空格 - ReadLine() 会包含所有空格

📖 总结

Console.ReadLine() 是C#控制台编程中最基础、最常用的输入方法:

  • 简单易用 - 一行代码获取用户输入
  • 功能强大 - 可以获取任何文本输入
  • 用途广泛 - 从简单对话到复杂系统
  • 学习必备 - 几乎所有控制台程序都会用到

通过练习,你可以掌握:

  1. 基本输入输出
  2. 数据验证和处理
  3. 类型转换
  4. 构建交互式程序

从简单的示例开始,逐步挑战更复杂的练习题,你会很快掌握 Console.ReadLine() 的精髓!