【问题标题】:Why are the prints going diagonal为什么打印是对角线
【发布时间】:2020-07-04 16:12:16
【问题描述】:

这是我的代码

        int ultra = 0;
        int hydra = 999;

        while (1 < 2)
        {
            Console.Write(ultra);
            ultra++;
            Console.Write($"                                                                    {hydra}");
        }

如你所见,我在 {hydra} 部分缩进了很多,那是因为我想要 2 行单独的行(这也是我使用 console.write 的原因)但我得到的是 this

然后在大约 990 亿之后,这就是我得到的

但是为什么
1.一开始它们是对角线
2.最后变成3条直线
3. 为什么是 3 条直线而不是 2 条?
这是没有意义的,有人可以解释一下这里发生了什么吗? 注意:即使我将它们设为 Console.WriteLine,它们仍然是对角线

编辑:我发现它们是对角线,因为我没有添加换行符,但我仍然不明白为什么它们会在超过“990 亿”时变成 3 行

【问题讨论】:

  • 首先你正在运行一个无限循环,这可能会导致应用程序崩溃
  • 感谢您抽出宝贵时间分享您的问题。你的问题质量很低。你的目标和困难是什么?到目前为止你做了什么?请尝试更好地解释您的问题、您的开发环境和数据结构,并分享更多代码(无屏幕截图)、屏幕图像或草图以及用户故事或场景图。为了帮助您改进您的要求,请阅读How do I ask a good questionWriting the perfect question

标签: c# rendering command-prompt


【解决方案1】:

嗯,您的号码中的位数正在增加,因此您不能使用固定长度的缩进。如果我了解您要正确执行的操作(我可能不了解,这里的目标到底是什么?),这应该是要走的路:

        int ultra = 0;
        int hydra = 999;
        string hydraString = hydra.ToString();

        while (true)
        {
            string ultraString = ultra.ToString();
            Console.Write(ultraString);
            ultra++;
            int requiredSpaces = Console.BufferWidth - ultraString.Length - hydraString.Length;
            Console.Write(new string(' ', requiredSpaces));
            Console.Write(hydraString);
        }

另外,我不知道你为什么要把它放在一个无限循环中,这将使用 100% 的 CPU 使用率,如果你想更安全,请在每次循环迭代之间添加一个 Thread.Sleep。

【讨论】:

    【解决方案2】:

    您需要使用 Console.Write 进行一些探索。您放置了固定数量的空格键,因此当超小时,您的字符总数较少,这就是为什么行不填充相同的原因。而且因为你的字符少了,所以数字一直往左走。

    这是为了回答你的问题,但现在我有一些建议。即使在像这样的无限循环中,您也可以通过单击控制台内的任意位置来暂停该过程(之后您可以通过按任意键来恢复它)。所以暂停这个过程并调整控制台的宽度。一次,将有 3 个完美的列,如果你把它缩小到足够的程度,然后是 2 个完美的列。这将进一步加强我之前的观点。

    现在,如果我理解正确,您需要两列。首先,您应该使用“制表符”字符而不是空格 - 它是一个特殊字符,您可以在字符串中写入“\t”来访问它。您可以放置​​多个。现在,对于两列,检查 ultra 是否是偶数并插入新行。代码应如下所示:

        int ultra = 0;
        int hydra = 999;
    
        while (true)
        {
            Console.Write(ultra);
            ultra++;
            Console.Write($"\t\t\t{hydra}");
            if(ultra % 2 == 0)
                Console.WriteLine();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2019-04-16
      • 2020-11-09
      • 2016-08-25
      • 2016-10-17
      相关资源
      最近更新 更多