根据用户输入对2d字符串数组进行排序?

时间:2016-03-14 18:15:39

标签: c# arrays visual-studio sorting

我对编程很陌生,最近我收到了一份学校作业,我需要对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应该能够防止错误,我也会收到错误。有什么提示吗?

1 个答案:

答案 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阵列时,我刚看到您的评论。尽管如此,我将把它留在这里供将来参考。