用字符串中的字符填充字符数组

时间:2018-10-05 03:00:23

标签: c# arrays

我试图用通过控制台输入的字符串中的字符填充数组。我已经尝试了下面的代码,但是它似乎没有用。我在for循环部分中得到Index Out Of Range异常,但我不明白为什么会发生。 for循环范围不正确吗?任何见识将不胜感激

            Console.WriteLine("Enter a string: ");
            var name = Console.ReadLine();

            var intoarray = new char[name.Length];
            for (var i = 0; i <= intoarray.Length; i++)
            {
                intoarray[i] = name[i];
            }
            foreach (var n in intoarray)
                Console.WriteLine(intoarray[n]);

6 个答案:

答案 0 :(得分:9)

使用ToCharArray()字符串的

可以转换为字符数组。

Console.WriteLine("Enter a string: ");
var name = Console.ReadLine();

var intoarray= name.ToCharArray();

foreach (var n in intoarray)
    Console.WriteLine(n);

如果您使用的是foreach,则应等待索引的行为就像获取值一样。

Console.WriteLine(n);

答案 1 :(得分:3)

由于数组从0开始,并且您在计算长度(包括长度),所以最后一次迭代将超出范围。 只需将循环条件更新为小于长度,而不是小于或等于。

答案 2 :(得分:2)

我喜欢snn bm的答案,但直接回答您的问题,您的输入长度超出了一个。应该是:

        for (var i = 0; i <= intoarray.Length - 1; i++)

(由于字符串的索引为零,因此基础数组中的最后一个字符将始终位于arrayLength-1的位置。)

答案 3 :(得分:1)

  • 1:迭代次数应为for (var i = 0; i < intoarray.Length; i++)

  • 2:代码

    foreach (var n in intoarray) Console.WriteLine(intoarray[n]);

    也会引发异常,因为“ n”是用作数组索引的数组中的字符。

  • 3:此外,还有一种将字符串转换为char数组的简便方法

    var intoarray = name.ToCharArray();

    Here's the result

答案 4 :(得分:0)

这是您的错误。代表i < intoarray.Length的选项太多。

for (var i = 0; i < intoarray.Length; i++) // original was i <= intoarray.Length in your code
{
    intoarray[i] = name[i];
}

答案 5 :(得分:-1)

使用linq:

  // Select all chars
  IEnumerable<char> intoarray =  
    from ch in name  
      select ch;  // can use var instead of IEnumerable<char>

    // Execute the query  
    foreach (char temp in intoarray)  
        Console.WriteLine(temp);