将值从文本文件添加到2D数组c#

时间:2016-06-27 13:18:16

标签: c# arrays parsing unity3d 2d

EDITED --- 我在foreach循环中向2D数组添加值时遇到问题。 Hari指出我需要在循环之前声明i = 0和我的数组,并且我有向后赋值。 (谢谢)。 但是,我试图添加一个最终强度数组和Debug.Log的值为i和控制台读取" System.Single []"而不是单一的价值。知道为什么会这样吗?  谢谢!!

这是我的代码:

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

//[Serializable]
public class MultiArrayList2 : MonoBehaviour {

public TextAsset datafile;
private int i;
private float[,] coordinates;
private float[] intensity;

// Use this for initialization
void Start() {

    string[] dataLines = datafile.text.Split ('\n');
    string[] lineValues;
    //print (dataLines.Length);
    i=0;

    float[,] coordinates = new float[6853, 3];  
    float[] intensity = new float[6853];
    foreach (string line in dataLines) {

        lineValues = line.Split (' ');
        float coordinateX = float.Parse (lineValues [0]);
        float coordinateY = float.Parse (lineValues [1]);
        float coordinateZ = float.Parse (lineValues [2]);
        float intens = float.Parse (lineValues [3]);

        coordinates [i, 0] = coordinateX;
        coordinates [i, 1] = coordinateY;
        coordinates [i, 2] = coordinateZ;

        intensity [i] = intens;

        Debug.Log (intensity);

        i++;        

    }

}

}

2 个答案:

答案 0 :(得分:0)

你没有为数组元素分配任何内容,首先你创建数组时它的元素不包含任何值,然后你将它们分配给coordinateX它应该是另一种方式,

 coordinates [i, 0] = coordinateX;

答案 1 :(得分:0)

几点。

  1. 您尚未初步化i,请在循环(foreach
  2. 之前初始化此变量
  3. coordinates初始化移至下一行。
  4. 您必须取消注释评论行(这就是您所需要的)。
  5. Debug.Log总是查找第一个坐标,我希望每个坐标都相同,将其更改为i
  6. 试试这个。

    i=0;
    int[,] coordinates = new int[6853, 3];  
    
    foreach (string line in dataLines) {
    
        lineValues = line.Split (' ');
        int coordinateX = int.Parse (lineValues [0]);
        int coordinateY = int.Parse (lineValues [1]);
        int coordinateZ = int.Parse (lineValues [2]);
        float intensity = float.Parse (lineValues [3]);
    
        coordinates [i, 0] = coordinateX;
        coordinates [i, 1] = coordinateY;
        coordinates [i, 2] = coordinateZ;
    
        Debug.Log(coordinates [i, 0]);
        i++;        
    }