控制台窗口按顺序切割文本

时间:2016-03-03 22:47:01

标签: c#

我正在开始编码,并且无法在我的教科书中找到解决方案,因为我在家学习以后在noob课程中验证,我没有老师要问......

C#

Console.Write("write a interger between 1 and 100: ");
string anvS = Console.ReadLine();
int anvI;
if (int.TryParse(anvS, out anvI))
{
  if (anvI < 100)
  {
    while (anvI <= 100)
    {
      Console.Write(anvI++ + " ");
    }
    Console.ReadKey();
  }
  else
  {}
}
else
{}

问题

enter image description here

正如你所看到的那样,右上角的格式被削减了。

此外,由于我有点新手,是否有一个简单的解决方案,不复杂,并且更高级的解决方案是什么?

2 个答案:

答案 0 :(得分:2)

这是Windows控制台的工作方式,您可以通过Console类更改控制台的大小。 您也可以在新行上写下每个数字,或者在数组中收集数字,然后在格式化的表格中将它们写出来。

List<int> listOfNumbers = new List<int>();

将您的Console.Write行替换为listOfNumbers.Add(anvI++);

最后写下你的输出:

for (int i = 0; i < 100; i += 5)
{
    Console.WriteLine(string.Join(" ", listOfNumbers.Skip(i).Take(5)));
}

答案 1 :(得分:0)

Windows控制台有两个宽度,以字符为单位。一个是缓冲区宽度 - 一行中有多少可用字符。另一个是窗口宽度 - 实际控制台窗口的宽度。如果缓冲区宽度大于窗口宽度,则控制台将具有水平滚动条。如果右键单击控制台标题栏并单击“属性”,则可以查看和设置它们。

控制台不关心单词,它只包含那么多字符,默认为80 。为了防止这种情况,您需要手动自动换行 - 格式化您的输出,以便它不会超出您设置的控制台宽度。您可以分别使用Console.BufferWidthConsole.WindowWidth获取(并设置)宽度。

这是一种做你想做的事情的方法:

Console.Write("Write an interger between 1 and 100:");
string inputS = Console.ReadLine();
int inputI;
if (int.TryParse(inputS, out inputI) && inputI < 100)
{
    var lineBuilder = new StringBuilder();
    while (inputI <= 100)
    {
        var numStr = inputI + " ";
        if (lineBuilder.Length + numStr.Length > Console.WindowWidth)
        {
            Console.WriteLine(lineBuilder.ToString());
            lineBuilder.Clear();
        }
        lineBuilder.Append(numStr);
        inputI++;
    }
    if (lineBuilder.Length > 0)
    {
        Console.WriteLine(lineBuilder.ToString());
    }
    Console.ReadKey();
}