2016-03-24 27 views
-1

我有數據以這種形式:如何使用1D字符串類型數組來代替c#中的雙類型二維鋸齒狀數組?

double[][] rawData = new double[3][]; 
rawData[0] = new double[] { 65.0, 220.0 }; 
rawData[1] = new double[] { 73.0, 160.0 }; 
rawData[2] = new double[] { 59.0, 110.0 }; 

現在我想從文本文件導入數據,並在地方這個數組數據的使用。我也想爲文本文件數據使用雙類型鋸齒形數組。

在文件中的每一行的數據是以下形式:5.1,3.5,1.4,0.2

有在文本文件總150行。我想逐行讀取文件,用逗號分隔並將每行保存爲雙精度型數組,如rawData[]][]。通過線

+0

你嘗試過這麼遠嗎?堆棧溢出是一個網站,可以幫助您學習,因爲您似乎只是在尋求答案。 – Kane

+0

單詞'double'表示以精確15-16位小數存儲的_real編號(請參閱[double](https://msdn.microsoft.com/zh-cn/library/678hzkk9.aspx))。 如果你想存儲一個字符串數組,那麼你需要聲明一個'string [] [] rawData'數組。 – Serge

回答

0

使用的LINQ嘗試,你必須

  1. 文件行
  2. 拆分各線進入items用逗號
  3. 轉換每個項目分爲Double
  4. 實體化個物品進入(內)陣列
  5. Materialise的線爲(外)陣列

實施

// let txt file being a CSV-like one 
    Double[][] data = File 
    .ReadLines(@"C:\MyFile.txt") 
    .Where(line => !String.IsNullOrEmpty(line.Trim())) // to remove empty lines if any 
    .Select(line => line.Split(',')) 
    .Select(items => items 
     .Select(item => Double.Parse(item, CultureInfo.InvariantCulture)) 
     .ToArray()) // inner array 
    .ToArray(); // outer array 
+0

嘗試上面提到的方法會給出一個錯誤:「將字符串轉換爲DateTime時,解析字符串解析字符串以將每個值放入DateTime對象之前採用日期」 –

+0

@ bint-e shafiq:如您所見,沒有'DateTime'在我的代碼片段;所以這是你的例程拋出異常;通常的原因是不正確的'DateTime.Parse();'調用(我的代碼使用'Double.Parse' - 'Double',而不是'DateTime') –

+0

我可以看到代碼中沒有DateTime。其實我是新來的C#所以無法得到爲什麼這個錯誤發生。我試圖使用Covert.ToDouble,但在這種情況下也會出現相同的錯誤。 「它的例程拋出了例外,你的意思是什麼?」如何處理? –

相關問題