我的教授给了我们这个问题
编写一个名为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());
}