【问题标题】:Sorting a 2d string array based on user input?根据用户输入对二维字符串数组进行排序?
【发布时间】: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


【解决方案1】:

旁注:出于某种原因,在我的接受按钮中,我可以添加超过 9 个触发错误的名称,即使我添加了一个应该 能够防止这种情况发生。

if (n < 3)
        {
            if (m < 3)

应该是 n

至于你问题的第一部分。

你可以像这样对数组进行排序

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]);
    }
}

此代码将遍历每个维度中的所有元素。对所有值进行排序,然后显示它们。它将这样做,直到显示所有值。

警告:此代码尚未经过测试,因此您可能需要进行一些调整。

编辑:当您说您不需要二维数组时,我刚刚看到您的评论。尽管如此,我将把它留在这里以供将来参考。

【讨论】:

  • 感谢您的帮助,虽然我现在不需要这个,但我会确保在以后的项目中记住这一点。 :) 自从我开始工作后,我就将其保留为已回答
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2020-11-17
  • 1970-01-01
  • 2011-07-01
  • 2021-08-16
  • 2014-08-10
相关资源
最近更新 更多