Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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#,Windows应用程序,画一个边为N的正方形_C#_Loops - Fatal编程技术网

C#,Windows应用程序,画一个边为N的正方形

C#,Windows应用程序,画一个边为N的正方形,c#,loops,C#,Loops,在学校的实践中,我必须用C#制作一个windows应用程序,它接受一个输入数字,并用N边画一个X的平方。我必须用循环来做,我不能使用任何预设命令。(例如,math.pow我不能使用)(我已经包含了作业的图片。)我已经在控制台应用程序中设置了这个程序的模式,在那里它工作得很好。 我想我很快就能解决这个问题了,但我不知道最后一步是什么。我很想知道我遗漏了什么,以及我应该如何解决这个问题 这是我现在的代码: int n; n = int.Parse(txt_i

在学校的实践中,我必须用C#制作一个windows应用程序,它接受一个输入数字,并用N边画一个X的平方。我必须用循环来做,我不能使用任何预设命令。(例如,math.pow我不能使用)(我已经包含了作业的图片。)我已经在控制台应用程序中设置了这个程序的模式,在那里它工作得很好。 我想我很快就能解决这个问题了,但我不知道最后一步是什么。我很想知道我遗漏了什么,以及我应该如何解决这个问题

这是我现在的代码:

            int n;
        n = int.Parse(txt_input.Text);

        //upper part
        for (int i = 0; i < n; i++)  
        {
            lbl_output.Text = "X";
            lbl_output.Text = "\n";

        }
        //middel part
        for (int i = 0; i < n - 2; i++)
        {
            lbl_output.Text = "X";
            for (int j = 0; j < n - 2; j++) lbl_output.Text = " ";
            lbl_output.Text = "X";
            lbl_output.Text = "\n";
        }

        //upper part
        for (int i = 0; i < n; i++)  
        {
            lbl_output.Text = "X";
            lbl_output.Text = "\n";
        }
intn;
n=int.Parse(txt_input.Text);
//上部
对于(int i=0;i
试试这个:

int n = int.Parse(txt_input.Text);

var sb = new StringBuilder();
for (int j = 0; j < n; j++)
{
    sb.Append('X');
}
sb.AppendLine();
for (int i = 0; i < n - 2; i++)
{
    sb.Append('X');
    for (int j = 0; j < n - 2; j++)
    {
        sb.Append(' ');
    }
    sb.Append('X');
    sb.AppendLine();
}
for (int j = 0; j < n; j++)
{
    sb.Append('X');
}

lbl_output.Text = sb.ToString();
int n=int.Parse(txt\u input.Text);
var sb=新的StringBuilder();
对于(int j=0;j
试试这个

int n = int.Parse(txt_input.Text);

//upper part
for (int i = 0; i < n; i++)
{
    lbl_output.Text += "X";
}

lbl_output.Text += "\n";

//middel part
for (int i = 0; i < n - 2; i++)
{
    lbl_output.Text += "X";

    for (int j = 0; j < n - 2; j++)
        lbl_output.Text += "  ";

    lbl_output.Text += "X";
    lbl_output.Text += "\n";
}

//upper part
for (int i = 0; i < n; i++)
{
    lbl_output.Text += "X";
}
int n=int.Parse(txt\u input.Text);
//上部
对于(int i=0;i

您忘记使用+=了,它将用前面指定的文本追加文本。代码中还有一些不必要的新行。

需要附加到字符串中。有几种方法可以做到这一点。这些“+=”应该可以正常工作是variable=variable+newValue的缩写

    int n = int.Parse(txt_input.Text);

    string output = "";

    for(int x = 0; x < n; x++) //rows
    {
        if (x == 0 || x == n-1) //first / last row all x
            for(int y = 0; y < n; y++)
            {
                output += "x";
            }
        else //other rows
            for(int y = 0; y < n; y++) 
            {
                output += (y == 0 || y == n - 1) ? "x" : " "; //if first or last column "X" else " "
            }

        output += "\n"; //at the end of each row a return
    }

    lbl_output.Text = output;
int n=int.Parse(txt\u input.Text);
字符串输出=”;
对于(int x=0;x

您可以在这里的浏览器中看到它的运行:

使用两个循环。一个表示正方形的宽度,一个表示正方形的高度

尝试一下并替换txt_输入控件中的参数。(只需在代码中放置所需的函数(例如,单击按钮),而不是表单加载

    private void Form1_Load(object sender, EventArgs e)
    {
        lblOutput.Text = GenerateSquare(5);
    }

    private string GenerateSquare(int n)
    {
        string square = "";

        for (int w = 0; w < n; w++)
        {
            for (int h = 0; h < n; h++)
            {
                // top or bottom line
                if (w == 0 || w == n - 1)
                {
                    square += "x";
                }
                else // sides
                {
                    if (h == 0 || h == n - 1)
                    {
                        square += "x";
                    }
                    else square += " ";
                }

                // change line 
                if (h == n - 1)
                    square += "\n";
            }

        }
        return square;
    }
private void Form1\u加载(对象发送方,事件参数e)
{
lblOutput.Text=GenerateSquare(5);
}
专用字符串生成方(int n)
{
弦方=”;
对于(int w=0;w
首先生成字符串。然后设置Text属性。使用+=运算符。每次都为
lbl\u输出指定一个新值。Text
。您需要与
lbl\u output.Text=lbl\u output.Text+“Whatever”
lbl\u output.Text+=“Whatever”连接
。两者都做相同的事情,只是使用不同的方式。好的,但OP不允许使用内置函数,如
PadRight
。显然,他必须学习如何创建自己的算法以及如何使用循环等。当然。我可以包括一个“循环”早上的版本。现在对我来说提供替代方案已经太迟了。@OlivierJacot Descombes-Done。