C# 比较 2 个字符串,排序,放入数组中



嗨,我现在更好地提出我的问题。

在foreach命令中,我为数组中的temp(保存变量)值获取。我保存在 temp 中的值来自数据网格视图单元格。

在下一步中,

在for命令中,我想比较2根字符串,字符串和下一个字符串,如果拳头字符串大于第二个,我想改变它们的位置。但是有一个问题,他们不改变位置,他们甚至得到一个空值,我不明白为什么他们得到一个空值。

我认为他们因为 foreach 命令而得到一个空值,索引 [i] 保持不变,但如果我要输入 i = i+1,则该命令将超出界限。

谢谢

森克。妮 可

foreach (DataGridViewRow row in dataGridView1.Rows)     
{
    if (row.Cells[i].Value == null)
    {
        //MessageBox.Show("This row is empty");
        break;
    }
    if (row.Cells[i].Value != null)
    {
        temp = row.Cells[i].Value.ToString();
        UnsortArray[i] = temp;
        i = i + 1;
    }
}
for (int a = 0; a < MaxZeilen; a++)
{
    if (i < MaxZeilen)
    {
        *if (String.Compare(UnsortArray[a], UnsortArray[a + 1]) > 0) 
        {
            UnsortArray[a] = temp;
            UnsortArray[a + 1] = temp2;
            temp = UnsortArray[a + 1];
            temp2 = UnsortArray[a];
        }*
    }
}
for (int i = 0; i < MaxZeilen; i++)
{
    UnsortArray[i] = SortArray[i];
    MessageBox.Show(UnsortArray[i]);
}

您是反向的,在分配临时变量之前将数组分配给临时变量:

UnsortArray[a] = temp;
UnsortArray[a + 1] = temp2;
temp = UnsortArray[a + 1];
temp2 = UnsortArray[a];

尝试:

temp = UnsortArray[a + 1];
temp2 = UnsortArray[a];
UnsortArray[a] = temp;
UnsortArray[a + 1] = temp2;

你在这里又做了一次UnsortArray[i] = SortArray[i];.我想你的意思是SortArray[i] = UnsortArray[i];

    temp = UnsortArray[a + 1];    
    UnsortArray[a + 1] = UnsortArray[a];
    UnsortArray[a] = temp;

而不是

          UnsortArray[a] = temp;
          UnsortArray[a + 1] = temp2;
          temp = UnsortArray[a + 1];
          temp2 = UnsortArray[a];

为什么使用数组而不是列表?

本页介绍如何对列表进行排序。

以下是对代码的一些改进。 您在顶部有一个错误,可能会导致无限循环,只需使用 Array.Sort 方法。 如果您希望它以不同的方式排序,请添加一个 IComparable 接口。

foreach (DataGridViewRow row in dataGridView1.Rows)     
{
     if (row.Cells[i].Value == null)
     {
          //MessageBox.Show("This row is empty");
          i++;
          break;
     }
     else (row.Cells[i].Value != null)
     {
          UnsortArray[i] = row.Cells[i].Value.ToString();
          i++;
     }
}  
Array.Sort(UnsortArray);
SortArray = UnsortArray;
    List<String> itemList = new List<string>();
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.Cells[0].Value = null)
        {
            itemList.Add(row.Cells[0].Value.ToString());
        }
    }
    itemList.Sort();
    string[] SortedArray = itemList.ToArray();
    for (int j = 0; j < SortedArray.Length; j++)
    {
        MessageBox.Show(SortedArray[j]);
    }

如果此代码不起作用,则添加

foreach(string item in itemList)
{
    MessageBox.Show(item);
}

在第一个 foreach 循环并检查值之后

将其替换为以下代码块

int i= 0;
foreach (DataGridViewRow row in dataGridView1.Rows)     
{
    if (row != null)
    {
        temp = row.ToString();
        UnsortArray[i] = temp;
        i = i + 1;
    }
}

for (int a = 0; a < MaxZeilen; a++)
{
    if (String.Compare(UnsortArray[a], UnsortArray[a + 1]) > 0) 
    {
        temp = UnsortArray[a + 1];             
        UnsortArray[a + 1] = UnsortArray[a];
        UnsortArray[a] = temp;
    }
}
for (int i = 0; i < MaxZeilen; i++)
{
    MessageBox.Show(UnsortArray[i]);
}
int MaxArrayCount = 0; 
foreach(DataGridViewRow row in dataGridView1.Rows)    
{ 
MaxArrayCount += row.Cells.Count;
 }
 string[] UnsortArray= new string[MaxArrayCount];

int cnt = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    for (int i = 0; i < row.Cells.Count; i++ )
                    {
                        if (row.Cells[i].Value != null)
                        {
                            temp = row.Cells[i].Value.ToString();
                            UnsortArray[cnt] = temp;
                            cnt++;
                        } 
                    }
                }

for (int b = 1; b < UnsortArray.Count; b++)
{    
  for (int a = 0; a < UnsortArray.Count - 1; a++)   
     {    
    if (String.Compare(UnsortArray[a], UnsortArray[a + 1]) > 0)
     {
      temp = UnsortArray[a + 1];
      UnsortArray[a + 1] = UnsortArray[a];
      UnsortArray[a] = temp;
    }    
  }    
}

for (int i = 0; i < MaxZeilen; i++)
{
MessageBox.Show(UnsortArray[i]);
}

相关内容

  • 没有找到相关文章

最新更新