我对编程很陌生,最近我收到了一份学校作业,我需要对2D数组进行排序。基本上,程序需要从用户接收各种名称,并按原始,降序和升序打印出来。这是我到目前为止的代码:接受值的按钮,以及打印原始作品的按钮,但是我无法对输入进行排序。您可能会在升序按钮中看到我尝试使用Array.Sort
,但意识到它只适用于1D数组,我真的不知道还有什么可以尝试。
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
应该能够防止错误,我也会收到错误。有什么提示吗?
答案 0 :(得分:0)
旁注:在我的Acpt按钮中出于某种原因,我可以添加更多 即使我添加了应该的其他内容,也会触发错误的9个名称 能够防止这种情况。
if (n < 3)
{
if (m < 3)
应该是n <= 3且m <= 3
至于你问题的第一部分。
您可以像这样对数组进行排序
for(int i = 0; i < matrizN.Length; i++)
{
Array.Sort(matrizN[i]);
for (int j = 0; j < matrizN[i][j]; j++)
{
Console.WriteLine(matrizN[i][j]);
}
}
此代码将循环遍历每个维度中的所有元素。对所有值进行排序,然后显示它们。它将执行此操作,直到显示所有值。
警告:此代码尚未经过测试,因此您可能需要进行一些调整。
编辑:当您声明不需要2D阵列时,我刚看到您的评论。尽管如此,我将把它留在这里供将来参考。