问题: 编写一个名为SortWords的程序,其中包含一个接受任意数量单词并按字母顺序对其进行排序的方法。当使用一个,两个,五个或十个单词调用该方法时,证明程序正常工作。
到目前为止我所拥有的:
private void button1_Click(object sender, EventArgs e)
{
String[] outWords = new string[20];
outWords[0] = textbox1.Text;
outWords[1] = textBox2.Text;
outWords[2] = textBox3.Text;
outWords[3] = textBox4.Text;
outWords[4] = textBox5.Text;
outWords[5] = textBox6.Text;
outWords[6] = textBox7.Text;
outWords[7] = textBox8.Text;
outWords[8] = textBox9.Text;
outWords[9] = textBox10.Text;
sortAndPrint(outWords[11]);
}
private void sortAndPrint(params string[] newWords)
{
Array.Sort(newWords);
label1.Text = newWords[0];
label2.Text = newWords[1];
label3.Text = newWords[2];
label4.Text = newWords[3];
label5.Text = newWords[4];
label6.Text = newWords[5];
label7.Text = newWords[6];
label8.Text = newWords[7];
label9.Text = newWords[8];
label10.Text = newWords[9];
}
我的问题是我要么在标签框中没有任何内容,要么因为无法将字符串转换为string[]
或System.IndexOutOfRangeException
而导致错误。我确定我在这里做了一些完全错误的事情。
答案 0 :(得分:1)
试试这个:
private void button1_Click(object sender, EventArgs e)
{
string[] outWords = new string[10];
outWords[0] = textbox1.Text;
outWords[1] = textBox2.Text;
outWords[2] = textBox3.Text;
outWords[3] = textBox4.Text;
outWords[4] = textBox5.Text;
outWords[5] = textBox6.Text;
outWords[6] = textBox7.Text;
outWords[7] = textBox8.Text;
outWords[8] = textBox9.Text;
outWords[9] = textBox10.Text;
sortAndPrint(outWords);
}
private void sortAndPrint(string[] newWords)
{
Array.Sort(newWords);
label1.Text = newWords[0];
label2.Text = newWords[1];
label3.Text = newWords[2];
label4.Text = newWords[3];
label5.Text = newWords[4];
label6.Text = newWords[5];
label7.Text = newWords[6];
label8.Text = newWords[7];
label9.Text = newWords[8];
label10.Text = newWords[9];
}
<强>摘要强>
传递整个数组sortAndPrint(outWords);
而非单个元素。
仅根据您的需要获取数组长度。 string[] outWords = new string[10];
请检查this question以查看params
的使用情况。您需要在用户param
时传递值,但如果您需要传递变量,则必须删除params
。
参数的例子
private void button1_Click(object sender, EventArgs e)
{
sortAndPrint("one","two","three","four","five");
}
private void sortAndPrint(params string[] newWords)
{
Array.Sort(newWords);
label1.Text = newWords[0];
label2.Text = newWords[1];
label3.Text = newWords[2];
label4.Text = newWords[3];
label5.Text = newWords[4];
}
答案 1 :(得分:0)
sortAndPrint(outWords[11]);
会将单个字符串(作为数组)传递给sortAndPrint
,因此当您致电时
label2.Text = newWords[1];
你得到一个越界异常。试试吧
sortAndPrint(outWords);
传递整个数组。另请注意,数组中的空插槽将在其他字符串之前进行排序,因此您需要找到一种方法来删除空/空字符串。
或者,如果目的是演示如何使用params
,您可以执行以下操作:
sortAndPrint(textbox1.Text,
textbox2.Text,
textbox3.Text,
textbox4.Text,
textbox5.Text);
但是你需要在sortAndPrint
中检查数组的边界,而不是假设数组的大小至少为10.
答案 2 :(得分:0)
如果您仔细阅读说明,则有此要求:
...包含一个接受任意数量单词的方法......
您可以使用$(document).ready(function () {
$('#button1').on('click', function(event) {
Button1_Click(event);
});
});
function Button1_Click(event) {
var container = $('.container');
var containerChildren = $(container).children();
var containerChildrenCount = $(containerChildren).length;
var inputId = 'fileInput[' + containerChildrenCount + ']';
$('.container').append('<input id="' + inputId + '" type="file" />');
$('#' + inputId).trigger('click');
}
关键字和params
来完成此操作。
...并按字母顺序对它们进行排序。
您使用string[]
使用一个,两个,五个或十个单词调用方法时,证明程序正常工作
这部分你没有做 - 你在代码中假设输入数组有10个项目,而你应该在输出结果之前检查它有多少项。
由于该方法无法确定数组大小,因此无法假设表单上有足够的标签来填充结果。鉴于此,我们可以使用Array.Sort(newWords);
来显示结果,我们可以使用MessageBox
以String.Join
字符加入数组中的所有项目,以便显示已排序的字词在不同的行:
Environment.NewLine
现在,我们可以通过向其传递不同数量的参数来演示此函数的使用。
首先,我们在同一页面上,我在private void SortAndPrint(params string[] newWords)
{
Array.Sort(newWords);
MessageBox.Show(string.Join(Environment.NewLine, newWords));
}
方法中添加了10个文本框中的代码,所有文本框都带有“输入”标记:
Form_Load
现在,在我们的按钮点击事件中,我们可以搜索表单上具有private void Form1_Load(object sender, EventArgs e)
{
var stdHeight = 20;
var stdWidth = 100;
var stdPad = 10;
var count = 10;
for (int i = 0; i < count; i++)
{
var textBox = new TextBox
{
Name = "textBox" + (i + 1),
Left = stdPad,
Width = stdWidth,
Height = stdHeight,
Top = (stdHeight + stdPad) * i + stdPad,
Tag = "input"
};
Controls.Add(textBox);
}
}
且其Tag == "input"
属性不为空的所有控件,并且我们可以传递这些.Text
我们的方法的值作为单个数组 OR 作为单个项目:
Text