c# - 如何将数组中的所有内容向上移动一个位置?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;
}
这里的问题是,它只是将第二个字符移动到末尾,而不是将所有字符移动到一个位置。(我知道为什么会这样,我只是不知道如何解决这个问题)有人帮忙吗?
解决方案
- 从结尾而不是开头开始,这样您就不会复制已更改的字符。
- 我不认为您打算在循环中使用“++”。这会改变 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;
}
推荐阅读
- json - 将 JSON 对象传递给 Datasnap Server 应用程序
- sql - 将复杂的 Oracle 查询转换为 Postgre
- cmake - 使用 CMake 查找 GLib:使用无效参数调用的 target_include_directories
- javascript - 全局范围内的 console.log(this) 返回 undefined
- date - 从 BigQuery 中的日期减去 1 ISO 8601 年
- elasticsearch - 默认情况下,在文本字段上禁用 Fielddata
- python - 在numpy数组中查找并平整重复值
- powerbi - 汇总同一表中 2 个单独列的基于行的数据
- vue.js - Vuejs将输入数据从子子子组件传递给父组件
- java - 生成签名的 apk 初始化时出错