【问题标题】:How can I change array elements C#如何更改数组元素 C#
【发布时间】:2017-07-11 21:59:53
【问题描述】:

如何从 for 循环中获取数组或数组值?

示例第一个输出打印正确的解决方案,但第二个输出仅打印最后一行,数组的最后一个单词。

如何从 splitLine 中获取正确的数组值并将其保存在变量中以供以后使用?

文件文本

Title:

这是我的第一行。
这是我的第二行。
这是我的第三行。
这是我的第四行。
这是我的第五行。

代码

using System;
using System.IO;

namespace Array
{
    class Class
    {
        private static void Main()
        {
            string[] lines = File.ReadAllLines(
                @"file.txt");

            string[] array = new string[] {};

            for (int i = 0; i < lines.Length; i++)
            {
                string[] splitLine = lines[i].Split();
                for (int j = 0; j < splitLine.Length; j++)
                {
                    Console.WriteLine(splitLine[j]);
                    array = splitLine[j].Split();
                }
            }
            Array.ForEach(array, Console.WriteLine);
        }
    }
}

【问题讨论】:

  • array = splitLine[j].Split();不是每次迭代都添加到数组中,而是设置数组的值。所以是的,它设置最后一行,然后退出 for 循环。
  • 我建议调试这段代码——你应该很快就能看到这里发生了什么。正如@DavidThielen 提到的,请特别注意array = splitLine[j].Split(); 这一行

标签: c# arrays for-loop


【解决方案1】:

如果您期望“数组”变量从每个字符串拆分操作中累积值,那么您的做法并不完全正确。如您所写,您的代码仅将“数组”变量设置为最后一个字符串拆分操作。您应该考虑使用像 List 这样的集合类型作为数组的类型。然后调用 Add 方法添加单个项或调用 AddRange 方法添加枚举(可以是数组)。

【讨论】:

  • 是的,我知道array = splitLine[j].Split(); 不是正确的解决方案,因为它没有给出数组长度。同样在 for 循环中,我无法以某种方式更改数组大小。而且我也不想使用列表,因为这可以用数组来完成,但我不知道应该怎么做。
  • 在这种情况下,您将需要检查文件的内容两次,一次确定所需的数组元素的数量,然后一次填写数组。
【解决方案2】:

ReadAllLines() 方法已经将您的文本分成几行。我不清楚你是否想进一步拆分它?如果没有,只需:

var lines = File.ReadAllLines(@"file.txt");
lines.ToList().ForEach(Console.WriteLine);

应该将行输出到控制台

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2021-09-21
    • 2016-08-08
    相关资源
    最近更新 更多