【发布时间】:2016-03-14 18:15:39
【问题描述】:
我对编程很陌生,最近我收到了一个学校作业,我需要对一个二维数组进行排序。基本上,程序需要从用户那里接收各种名称,并将它们按原始、降序和升序打印出来。这是我到目前为止的代码:接受值的按钮,以及打印原始作品的按钮,但我无法对输入进行排序。正如您可能会在升序按钮中看到的那样,我尝试使用Array.Sort,但意识到它仅适用于一维数组,我真的不知道还能尝试什么。
public partial class Form1 : Form {
string[,] matrizN = new string[3,3];
int n = 0;
int m = 0;
public Form1() {
InitializeComponent();
}
private void btn_Acpt_Click(object sender, EventArgs e) {
if (n < 3) {
if (m < 3) {
matrizN[n, m] = txt_Val.Text;
m++;
} else {
m = 0;
n++;
matrizN[n, m] = txt_Val.Text;
}
txt_Val.Clear();
txt_Val.Focus();
} else {
MessageBox.Show("Limit 9 names");
}
}
private void btn_Ori_Click(object sender, EventArgs e) {
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
MessageBox.Show(matrizN[x, y].ToString());
}
}
}
private void btn_Asc_Click(object sender, EventArgs e) {
Array.Sort(matrizN);
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
MessageBox.Show(matrizN[x, y].ToString());
}
}
}
}
感谢所有帮助,但如果您保持简单,我会更喜欢它。
旁注:在我的Acpt 按钮中,当我添加超过 9 个名称时,我得到一个错误,即使我添加了一个应该能够防止错误的else。有什么建议吗?
【问题讨论】:
-
排序后的二维数组应该是什么样子?
-
我不明白数组第二维的原因?这像名字,姓氏吗?因为我只在文本框上看到。
-
对于添加超过 9 个名称的问题:您的第 10 个名称不会触发外部 else,因为 n=2 和 m = 2。它会影响内部 else。
-
一般来说,作为一个建议,忘记 .NET 中的多维数组。锯齿状数组是可以的,但多维数组是一种不受支持的不完全痛苦。
-
是的,你是对的,我不需要 2d 数组,我尝试将其作为 1d 并且我让它工作。我想我是在尝试做 2d,因为我们了解到上一节课,我现在意识到我什至不需要它。抱歉,伙计们的愚蠢问题编辑:我可能会尝试 B.K 感谢您的帮助,但我想我暂时会坚持 1d
标签: c# arrays visual-studio sorting