【发布时间】:2019-10-24 08:32:37
【问题描述】:
数字可以向左移动 => 检查。
只有数组中的第一个数字跟随,其余的消失。
例如现在的情况:
输入数组:1 2 3 4 5 6
输入左移多少次:3
输出:4 5 6 1
输出应该如何:4 5 6 1 2 3
有人可以帮助解决这个我找不到的可能简单的解决方案。
var str = Console.ReadLine();
int shift = Convert.ToInt32(Console.ReadLine());
var strArray = str.Split(' ');
var x = strArray[0];
for (var i = 0; i < strArray.Length - shift; i++)
{
strArray[i] = strArray[i + shift];
}
strArray[strArray.Length - shift] = x;
for (var i = 0; i <= strArray.Length - shift; i++)
{
Console.Write(strArray[i] + ' ');
}
【问题讨论】:
-
我建议您使用Visual Studio Debugger 看看您的程序,并逐步完成它 - 问题应该很快就会变得清晰。
-
它变成了 4 5 6 因为你写数组的方式。如果您在最后一个循环中将条件更改为
i < strArray.Length,您会得到:4 5 6 1 5 6。 -
我的控制台变成了 4 5 6 1?不是 4 5 6
-
请注意,您的代码只处理向左移动的数字,它不处理环绕到另一端的数字。
-
@John 已经非常感谢您帮助我。确实,您的答案显示
4 5 6 1 5 6。这几乎是正确的,现在最后 2 个数字需要变为2 3。