我编写了代码,以便它接受输入、字符串,然后;
- 输出字符串,不做任何更改
- 显示数组中的字符串,以便将其列出
- 然后,它将在列表被反转后输出该列表
到目前为止,我的代码已经完成了以下操作:
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]);
}