【发布时间】:2018-03-15 02:01:41
【问题描述】:
问题: 编写一个名为 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 而引发错误。我确定我在这里做错了什么。
【问题讨论】:
-
您声明
sortAndPrint(outWords[11]);。outWords[11]是什么?它似乎从未被分配。也许您应该传递整个数组outWords,或者按照赋值状态,将 1、2、5 和 10 个单词传递给方法。 -
您的方法接受任意数量的单词,但您是在
newWordsparams 数组中可能存在也可能不存在的硬编码索引。您不应该假设这一点,而是使用循环来输出值。确保您了解params string[]和普通的旧string[]之间的区别。 -
检查下面的答案。你的代码有很多变化。您可以轻松识别。