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++;
}
}
}
答案 0 :(得分:0)
你没有为数组元素分配任何内容,首先你创建数组时它的元素不包含任何值,然后你将它们分配给coordinateX
它应该是另一种方式,
coordinates [i, 0] = coordinateX;
答案 1 :(得分:0)
几点。
i
,请在循环(foreach
)coordinates
初始化移至下一行。Debug.Log
总是查找第一个坐标,我希望每个坐标都相同,将其更改为i
。试试这个。
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++;
}