You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何逐行读取用户输入(类似Java Scanner或Go bufio的实现方式)

C#中如何逐行读取用户输入(类似Java Scanner或Go bufio的实现方式)

嘿,我来帮你搞定这个问题!你现在的思路其实已经找对方向啦——C#里的Console.ReadLine()就可以实现类似Java Scanner、Go bufio的逐行读取功能,刚好匹配你的需求。

先明确下你的输入输出要求:

输入示例:

3
Hans
Grethe
Otto

输出示例:

takk Hans
takk Grethe
takk Otto

你的基础代码逻辑是对的,但可以做一些优化让它更健壮,同时严格匹配输出要求:

优化后的代码

using System;

namespace kattis {
    class Program
    {
        static void Main(String[] args)
        {
            // 先读取宾客数量,做合法性校验避免出错
            if (!int.TryParse(Console.ReadLine(), out int guestCount))
            {
                Console.WriteLine("请输入有效的数字哦!");
                return;
            }

            // 循环读取每个宾客名字并输出感谢语
            for (int i = 0; i < guestCount; i++)
            {
                string guestName = Console.ReadLine();
                // 处理用户可能直接按回车的情况
                if (string.IsNullOrEmpty(guestName))
                {
                    Console.WriteLine("请输入有效的宾客名字呀!");
                    continue;
                }
                // 用字符串插值更简洁,同时匹配示例的小写takk
                Console.WriteLine($"takk {guestName}");
            }
        }
    }
}

几点小说明:

  • 健壮性优化:用int.TryParse替代Convert.ToInt32,如果用户输入的不是数字,程序不会崩溃,还能友好提示;
  • 空值处理:增加string.IsNullOrEmpty判断,防止用户直接回车或者结束输入导致的空引用问题;
  • 写法简洁性:用字符串插值$"takk {guestName}"替代字符串拼接,代码更易读;
  • 输出匹配:把你代码里的"Takk "改成小写的takk,和示例输出保持一致。

拓展:如果不知道输入行数怎么办?

要是你遇到不知道提前输入行数的场景,还可以用无限循环读取直到输入结束,这就更贴近Java Scanner的hasNextLine()或者Go bufio的逐行读取逻辑了:

using System;

namespace kattis {
    class Program
    {
        static void Main(String[] args)
        {
            string line;
            // 一直读取直到用户按下Ctrl+Z(Windows)或Ctrl+D(Linux/Mac)结束输入
            while ((line = Console.ReadLine()) != null)
            {
                Console.WriteLine($"takk {line}");
            }
        }
    }
}

备注:内容来源于stack exchange,提问作者Theresia Ravn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:15:27