2017-04-12 7 views
-1

Streamreaderを使用してファイルの内容を取得し、2次元配列に配置する方法を教えてください。 ファイルは次のとおりです。2d配列のStreamreader

type1,apple,olive,pear 
    type2,orange,nuts,melon 
    type3,honey,grapes,coconut 
次のように

は、これまでのところ、私のコードは次のとおりです。

 public static void invent() 
    { 
     StreamReader reader2 = new StreamReader("food.txt"); 
     while (reader2.EndOfStream == false) 
     { 
      string[,] line = new string[1000, 1000]; 

      line = reader2.ReadLine(); 
     } 


    } 
+0

具体的には2D配列が必要ですか、より良いシナリオで作業できますか。例えばリスト。 – NicoRiff

+0

シナリオ。だから私は "、"で区切られた要素にファイルの内容を格納できる場所が必要です。だから、将来私はX1、Y1(オレンジ)を選択することができます。 – xxish

+0

[Create ArrayList from array]の複製があります(http://stackoverflow.com/questions/157944/create-arraylist-from-array) – xxish

答えて

0

私は何をしようとするためのより良いアプローチはList<string[]>にあなたの分割さの文字列を持つことだと思います。内部のデータを扱う方がはるかに簡単です。私は二次元配列が正しいアプローチだとは思わない。この例を見て:あなたが必要として

List<string[]> splittedList = new List<string[]>(); 

string[] list = File.ReadAllLines("c:/yourPath.txt"); 

foreach (string s in list) 
{ 
    splittedList.Add(s.Split(',')); 
} 

は、その後、あなたはList<string[]>を反復処理することができます。

0

このようなスタティックアレイは作成しないでください。必要に応じて拡張できるListを使用してください。

//Read the lines 
string[] lines = System.IO.File.ReadAllLines(@"food.txt"); 

//Create the list 
List<string[]> grid = new List<string[]>(); 

//Populate the list 
foreach (var line in lines) grid.Add(line.Split(',')); 

//You can still access it like your 2D array: 
Console.WriteLine(grid[1][1]); //prints "orange" 
+0

ご協力ありがとうございます。しかし、もし私がY座標にアクセスするにはどうすれば違うのですか?たとえば、タイプ1は4つの食品を、タイプ3は1つのアイテムを持つことができます。どのように私はループを使用してこれを行うだろうか?任意のヘルプが評価されています – xxish