Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台窗口按顺序剪切文本_C# - Fatal编程技术网

C# 控制台窗口按顺序剪切文本

C# 控制台窗口按顺序剪切文本,c#,C#,我只是在乞求编码,在我的课本上找不到解决办法,因为我在家里学习,以便以后在noob课程中验证,我没有老师可以问 C# Console.Write(“写一个介于1和100之间的整数:”); 字符串anvS=Console.ReadLine(); 国际anvI; if(内锥虫(anvS,外anvI)) { 如果(anvI

我只是在乞求编码,在我的课本上找不到解决办法,因为我在家里学习,以便以后在noob课程中验证,我没有老师可以问

C#

Console.Write(“写一个介于1和100之间的整数:”);
字符串anvS=Console.ReadLine();
国际anvI;
if(内锥虫(anvS,外anvI))
{
如果(anvI<100)
{

虽然(anvI这是Windows控制台的工作方式,但您可以通过console类更改控制台的大小。 您还可以将每个数字写在新行上,或者将数字收集到一个数组中,并在末尾将其写入一个格式化的表中

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

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

控制台不关心文字,它只会精确地换行,默认为80个字符。为了防止出现这种情况,您需要手动换行-格式化输出,使其不会超出控制台宽度设置的范围。您可以获取(并设置)分别使用
Console.BufferWidth
Console.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();
}
Console.Write(“写一个介于1和100之间的整数:”);
字符串输入=Console.ReadLine();
int-inputI;
if(输入端、输出端、输入端和输入端<100)
{
var lineBuilder=新的StringBuilder();
while(inputI Console.WindowWidth)
{
Console.WriteLine(lineBuilder.ToString());
lineBuilder.Clear();
}
lineBuilder.Append(numStr);
inputI++;
}
如果(lineBuilder.Length>0)
{
Console.WriteLine(lineBuilder.ToString());
}
Console.ReadKey();
}

我不确定我是否完全理解您的问题。您的意思是当文字换行到另一行时,数字会一分为二吗?@GediminasMasaitis是的,如果您看他的图片,数字会一分为二,我知道这是控制台窗口的默认设置,我想他可能会得到窗口的宽度,然后是字符串的宽度,然后做一些调整这是一个逻辑问题,但不确定这是否是一个好的解决方案。@Niclas W虽然这不是你问题的答案,但你不需要那些空的ELSE。
for (int i = 0; i < 100; i += 5)
{
    Console.WriteLine(string.Join(" ", listOfNumbers.Skip(i).Take(5)));
}
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();
}