C#试图输出Char数组,但顺序相反



我编写了代码,以便它接受输入、字符串,然后;

  1. 输出字符串,不做任何更改
  2. 显示数组中的字符串,以便将其列出
  3. 然后,它将在列表被反转后输出该列表

到目前为止,我的代码已经完成了以下操作:

string input;
int arLENGTH;
Console.WriteLine("Enter the string you want to be reversed.");
input = Console.ReadLine(); 

char[] chars = input.ToCharArray();
Console.WriteLine("Original string: " + input);
Console.WriteLine("Character array(Not Reversed):");
for (int a = 0; a < chars.Length; a++)
{
Console.WriteLine(chars[a]);
}
arLENGTH = chars.Length;
Console.WriteLine("Reversed String: ");
while (arLENGTH > chars.Length)
{
Console.WriteLine(chars[arLENGTH]);
arLENGTH--;
}
Console.ReadLine();

当我运行它时,它会输出反向字符串,然后将其留空。

这在C#索引运算符中变得非常琐碎:

static void Main(string[] _)
{
string input = "my input string";
Console.WriteLine(input);
for (int i = 1; i <= input.Length; ++i)
Console.Write(input[^i]);
Console.WriteLine();
}

如果您将arLENGTH设置为>字符。长度

这意味着你把长度>长度如果长度是5,那么你说5>5你应该放而arLENGTH>0

希望你能理解。

---编辑

我只是注意到你应该放的其他东西[长度-1]

string input;
int arLENGTH;
Console.WriteLine("Enter the string you want to be reversed.");
input = Console.ReadLine();
char[] chars = input.ToCharArray();
Console.WriteLine("Original string: " + input);
Console.WriteLine("Character array(Not Reversed):");
for (int a = 0; a < chars.Length; a++)
{
Console.WriteLine(chars[a]);
}
arLENGTH = chars.Length;
Console.WriteLine("Reversed String: ");
while (arLENGTH > 0)
{
Console.WriteLine(chars[arLENGTH - 1]);
arLENGTH--;
}
Console.ReadLine();

问题在于while循环。您正在分配arLENGTH = chars.Length;,然后在arLENGTH > chars.Length时签入,这永远不会是真的,因为两者都包含相同的值。

更新while循环,以便

while (arLENGTH > 0)
{
Console.WriteLine(chars[arLENGTH-1]);
arLENGTH--;
}

为什么不使用for循环打印反向,就像打印正向一样?

您只需要从Length - 1开始,一直持续到大于或等于零,然后递减该值。

看起来像这样:

Console.WriteLine("Reversed String:");
for (int a = (chars.Length - 1); a >= 0; a--)
{
Console.WriteLine(chars[a]);
}

最新更新