2016-06-27 102 views
0

EDITED --- 我在向foreach循環中的二維數組添加值時遇到問題。 Hari指出我需要在循環之前聲明i = 0和我的數組,並且我已經將值分配給了後向。 (謝謝)。 但是,我試圖添加一個最終強度數組和Debug.Log我的值和控制檯讀取「System.Single []」,而不是單個的值。任何想法爲什麼這是? 謝謝!將文本文件中的值添加到二維數組c#

這裏是我的代碼:

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

幾點。

  1. 循環之前你還沒有initilaized i,initialze這個變量(foreach
  2. 將您coordinates初始化到下一行。
  3. 你必須取消評論行的註釋(這是你需要的)。
  4. 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++;   
} 
+0

非常感謝你這麼多!有效! – jrogers12

+0

很高興爲您提供幫助,如果這對您有幫助,那麼將其標記爲答案,並且這是問題的解決方案。 –

0

你沒有分配任何數組元素,當第一次你讓你的數組的元素不包含任何值,那麼你將他們分配到coordinateX它應該是相反的,

coordinates [i, 0] = coordinateX; 
相關問題