方法绘制一条线



我的教授给了我们这个问题

编写一个名为Drawline的方法,该方法接受整数n作为输入,并在lstOutput中生成一行带有n个连字符的输出。也就是说,如果n=5,则在列表框中显示一行"-----"。

基本上,他希望我在文本框中键入一个数字,当我单击按钮时,它应该在列表框中显示那么多连字符。使用visual Studio C#WindowsFormApp。

这是我的代码:

private void btn3_Click(object sender, EventArgs e)
{
double n;
Drawline(out n);
}
private void Drawline(out double n)
{
n = double.Parse(textBox1.Text);
string strline = "";
for (n = 1; n <= 5; n++);
strline += '-';
lstOutput.Items.Add(String.Format(strline, n));
}

它有效,但无论我在文本框中输入什么数字,都只显示一个连字符。有人能帮我吗?

问题出在DrawLine方法中的for循环上。

您需要删除for语句末尾的分号,因此strLine += '-';将属于循环,而不仅仅是执行一次。

private void Drawline(out double n)
{
n = double.Parse(textBox1.Text);
string strline = "";
for (i = 1; i <= 5; i++)
strline += '-';
lstOutput.Items.Add(String.Format(strline, n));
}

看起来你可能会让这件事变得更加复杂。

目前尚不清楚DrawLine方法使用out属性返回双值的"原因"?这是要求吗?如果这不是一项要求,那么就没有必要。

此外,根据要求…"编写一个名为Drawline的方法,接受整数n作为输入">…如果这是要求,我不得不问为什么该方法接受double值?这不符合要求。

以下是一个简化版本,应该符合您的要求。首先,在按钮单击事件中,我们希望从文本框中获取integer值。我们需要假设用户输入的值不是有效的整数。如果该值不是一个大于零(0(的有效整数,那么我们将显示一个消息框来指示该值。

private void button1_Click(object sender, EventArgs e) {
if ((int.TryParse(textBox1.Text, out int value)) && value > 0) {
Drawline(value);
}
else {
MessageBox.Show("String is not a number or is less than 1 : " + textBox1.Text);
}
}

接下来是DrawLine方法,它只需在列表框中添加一个"-"字符字符串。请注意,n的传入/接受值已被验证为大于0的有效整数。

private void Drawline(int n) {
lstOutput.Items.Add(new string('-', n));
}

如果你必须使用for循环来生成字符串,它可能看起来像…

private void Drawline(int n) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.Append("-");
}
lstOutput.Items.Add(sb.ToString());
}

最新更新