C# 以 StandardInput 的方式读取通过命令行提供的文本文件



我正在尝试找出旧的FizzBuzz挑战。我弄清楚了 FizzBuzz 部分背后的逻辑(打印 Fizz 表示可被 3 整除的数字,Buzz 表示可被 5 整除的数字,FizzBuzz 表示可被两者整除的数字)。

指示:

玩家通常围成一圈。第一个玩家说数字"1",每个玩家依次说下一个数字。但是,任何可被 X 整除的数字(例如,三)都将替换为单词 fizz,任何可被 Y 整除的数字(例如,五)将替换为单词 buzz。可被两者整除的数字成为嘶嘶声。犹豫不决或犯错的玩家将被淘汰出局。编写一个程序,打印出最后一系列的数字,其中那些可以被 X、Y 整除的数字被替换为"F"表示嘶嘶声,"B"表示嗡嗡声,"FB"表示嘶嘶声。

输入样本:程序应接受文件作为其第一个参数。该文件包含多个分隔行;每行包含 3 个空格分隔的数字。第一个数字是第一个除法符 (X),第二个数字是第二个除法器 (Y),第三个数字是您应该数多远 (N)。您可能假定输入文件的格式正确,并且数字是有效的正整数。

例如:3 5 102 7 15

输出示例:打印出系列 1 到 N,将可被 X 整除的数字替换为"F",将可被 Y 整除的数字替换为"B",将可被两者整除的数字替换为"FB"。由于输入文件包含多组值,因此输出应每组打印出一行。确保打印的每一行中没有尾随空格。

1 2 F 4 B F 7 8 F B1 F 3 F 5 F B F 9 F 11 F 13 FB 15

约束:

• 测试用例数量≤ 20

• "X" 在范围 [1, 20]

• "Y" 在范围 [1, 20]

• "N" 在范围内 [21, 100]

不是在寻找为我做这件事的人,只是帮助我更好地了解我如何阅读文本文件。如果这是一个"愚蠢"的问题,我深表歉意。我已经研究了Microsoft的发展网络页面以进行澄清,但这让我更加困惑......谢谢。

标准输出(标准输出)只是常规控制台输出;

要向其发送一些东西,只需执行Console.WriteLine.

发送到 stderr Console.Error.WriteLine ,但挑战不需要。

CodeEval 上的挑战不需要你从 stdin(标准)中输入任何内容,你只需从 Main 方法的第一个参数中获取文件名:

public static void Main(string[] args)
{
    var fileContent = File.ReadAllText(args[0]);
}

如果你必须有效地从标准中读取,你可以使用Console.ReadLine

string line;
while ((line = Console.ReadLine()) != null)
{
    // Do whatever you need to do with the line variable read from the stdin.
}

或与您提供的代码集成:

using (var reader = new StreamReader(Console.OpenStandardInput()))
{
    Console.WriteLine(FizzBuzz.ParseInput(reader));
}

而且,如果您只需要解析文本,还有另一种选择:Console.In

相关内容

  • 没有找到相关文章

最新更新