【发布时间】:2021-01-16 03:06:06
【问题描述】:
C# code for reversing a string
这部分我没看懂
arr[name.Length - i] = name[i - 1];
让我们有一个 5 个字符的 name。所以arr 的值是 4,对吧?
那么在循环中,循环变量的长度也是一样的,所以它的初始值也是4。
在第一次迭代中,arr[4 - 4] 的值将是arr[0],name[4 - 1] 将是name[3],因此arr 的第一个索引与name 的第四个索引复制。
arr中原名是如何倒序存储的?
static void Main(string[] args)
{
Console.Write("What is your name: ");
var name = Console.ReadLine();
var arr = new char[name.Length];
for (var i = name.Length; i > 0; i--)
arr[name.Length - i] = name[i - 1];
var reversed = new string(arr);
Console.WriteLine(reversed);
}
【问题讨论】:
-
请将您的代码作为文本,而不是图像。您是否已在调试器中单步执行您的代码以查看发生了什么?
-
包含的代码为文本@LanceU.Matthews
-
这看起来是一种奇怪的做法。通常最好向前迭代而不是向后迭代(除非有特定需要)。在处理数组等时,也尽量使用从零开始而不是从 1 开始的值。即您的迭代器变量 i 应该介于 0 和 name.Length - 1 之间(而不是 name.Lenght 为 1)。做这些事情会让代码更简单,更容易阅读。
-
在 for 循环的每次迭代中打印字符
arr[name.Length - i]和name[i - 1],您将了解在反转字符串时到底发生了什么。如果这不能给您答案,请详细说明您的问题 -
你的代码有效吗?如果是这样,您是否逐行、逐个字符地遍历它?如果您这样做,您的问题将得到解答。如果它不起作用,我希望您有一个或多个 Off by one 错误;这就是在这样的代码中发生的事情