【问题标题】:load txt file (m x n matrix) into 2d double array将 txt 文件(m x n 矩阵)加载到二维双数组中
【发布时间】:2014-02-13 07:17:43
【问题描述】:

我想从我的 txt 文件中加载数据并将它们存储在一个二维双精度数组中。 我正在尝试这样的事情:

String input = File.ReadAllText(@"E:\c\vstup.txt");

int k = 0, l = 0;
double[][] resultout = new double[52][];
foreach (var row in input.Split('\n'))
{
    l = 0;
    foreach (var col in row.Trim().Split(' '))
    {
        resultout[k][l] = double.Parse(col.Trim());
        l++;
    }
    k++;
}

它不工作。我是 C# 新手。谁能建议如何做到这一点?谢谢。

编辑:它在以下行抛出 NullReferenceException:resultout[k][l] = double.Parse(col.Trim());

【问题讨论】:

  • 你说的 It is not working 是什么意思?有任何异常或错误消息吗?
  • 文件有固定的结构吗?所有行中的数字计数都相等吗?
  • 1.这行foreach (var row in input.Split('\n')) 中的input 是什么? 2. 你可以试试input.Split(System.Environment.NewLine),而不是input.Split('\n')。我不确定它是否会起作用。但可能是您的文本文件使用'\n\r' 换行。 3.你可以尝试逐行阅读,而不是'\n'
  • 我已经编辑了我的问题。

标签: c# arrays double multidimensional-array file.readalllines


【解决方案1】:

您不会初始化每一行。排队:

double[][] resultout = new double[52][];

您初始化了一个包含 52 个 double[] 类型元素的数组,但它们没有被初始化。因此,当您尝试:

resultout[k][l] = double.Parse(col.Trim());

这只是意味着您尝试获取不存在数组的l 元素,而resultout[k] 只是null。您必须初始化每一行:

resultout[k] = new double[number_of_elements];

你必须知道number_of_elements在哪里,例如:

var values = row.Trim().Split(' ');
resultout[k] = new double[values.Count()];
foreach (var col in values)
{
    resultout[k][l] = double.Parse(col.Trim());
    l++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多