首页 > 解决方案 > 如何将数组中的所有内容向上移动一个位置?C#

问题描述

我正在尝试制作一种方法,将数组中第一个和最后一个字符之间的每个字符向上移动一个位置。此外,第一个到最后一个字符必须“移动”到数组中的第二个位置 ([1])。简而言之,我希望“abcdef”成为“aebcdf”。这就是我想出的:

                if (myArray.Length > 3)
            {
                char savechar = myArray[myArray.Length - 2];
                for (int t = 1; t < (myArray.Length - 2); t++)
                {
                    myArray[t++] = myArray[t];
                }
                myArray[1] = savechar;
            }

这里的问题是,它只是将第二个字符移动到末尾,而不是将所有字符移动到一个位置。(我知道为什么会这样,我只是不知道如何解决这个问题)有人帮忙吗?

标签: c#arrayschar

解决方案


  1. 从结尾而不是开头开始,这样您就不会复制已更改的字符。
  2. 我不认为您打算在循环中使用“++”。这会改变 t 的值并且不需要。

这是生成的代码:

if (myArray.Length > 3)
{
    char savechar = myArray[myArray.Length - 2];
    for (int t = myArray.Length - 2; t > 1; t--)
    {
        myArray[t] = myArray[t-1];
    }
    myArray[1] = savechar;
}

推荐阅读