在C#中反转字符数组

6

我正在尝试学习C#。我想输入一些文本,然后让它倒序输出。它确实对其进行了反转,但是会多次重复,次数与输入的文本长度相同。因此,hello变成了olleholleholleholleholleh。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Reversed_Array
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter text to be reversed");
            string inputText = Console.ReadLine();
            char[] myChar = inputText.ToCharArray();
            Array.Reverse(myChar);

            foreach (char character in myChar)
            {
                Console.Write(myChar);
            }
            Console.ReadLine();
        }
    }
}

我想尝试将字符串转换为字符数组。我想提一下,因为我确实不需要字符数组。

3个回答

12

因为每次你要写整个数组而不是单个字符,尝试这样做:

 foreach (char character in myChar)
 {
     Console.Write(character);
 }

哇,原来这么简单啊,我为什么没看出来呢。非常感谢你!我是第一次使用这个网站,但已经很喜欢它了 :D - WindowsProdigy7
1
@user3134332,很高兴能帮到你。请查看其他答案,它们提供了更好的方法来解决你的问题。 - Guru Stron
如果建议的解决方案解决了您的问题,那么您应该将建议的解决方案标记为答案。 - Ankush Madankar
现在已将其标记为答案。谢谢! - WindowsProdigy7
@bas =) 一个也很棒啊) - Guru Stron
@WindowsProdigy7很高兴能够帮助,继续探索吧) - Guru Stron

2
 for( int i = myChar.Length -1 ; i >= 0 ; --i )
 {
      Console.Write(myChar[i]);
 }

3
这有点超出我的能力范围啊!不过还是谢谢你的帮助!! - WindowsProdigy7
2
啊,我又看了一遍,太好了,现在我明白了,只是需要盯着它看一会儿(我是新手)。感谢你的回答! - WindowsProdigy7

1

不需要特殊的数组、反转等操作,只需将字符倒序打印出来即可:

static void Main(string[] args) 
{
    Console.WriteLine("Enter text to be reversed");
    string inputText = Console.ReadLine();

    // Backward loop
    for (int i = inputText.Length - 1; i >= 0; --i)
      Console.Write(inputText[i]);
}

嘿,我明白了,看了一会儿就懂了。它通过获取字符串中字符的数量减去回车符来打印出字符串中的字符。然后从最高值到最低值循环,直到达到0。我说得对吗?这似乎是一个很好的方法! - WindowsProdigy7
@WindowsProdigy7并不完全正确,-1是因为在c#中数组是从零开始的,如果没有-1,你将会得到一个IndexOutOfRangeException异常。 - Guru Stron
我有点困惑为什么需要-1。等等,是因为如果我输入长度为5的hello,但由于它从0开始。h是0,e是1,l是2,l是3,o是4,所以如果尝试打印第5个字符,那里面就没有任何东西了? - WindowsProdigy7
@WindowsProdigy7 如果你尝试打印第五个元素,你将超出数组的边界(基本上是尝试访问属于其他内容的内存,因此你将获得不正确和无用的数据,如果尝试更改它,你将破坏其他数据),所以你会得到“IndexOutOfRangeException”来防止可能的错误和损坏状态。 - Guru Stron
所以用更简单的说法(抱歉 xD),我说字符串长度为 5,但实际上只有 4 个字符。但是因为它从 0 开始,当你尝试打印第 5 个字符时,什么也不会显示。我需要一个“是的,你是对的”之类的回答,否则我永远不确定 xD 谢谢帮忙! - WindowsProdigy7
@WindowsProdigy7,是的) - Guru Stron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接