#c# #arrays
#c# #массивы
Вопрос:
Я понятия не имею, как создать функциональную программу, и я хочу перенести текстовый файл в 2D массив.
Спасибо за ответы
Это содержимое моего текстового файла:
0000000011
0011100000
0000001110
1000011100
1000000000
0000111111
1000001100
1000000000
1000011000
1000001111
Код:
static void Main(string[] args)
{
int[,] map = new int[10, 10];
StreamReader reader = new StreamReader(@"Lode.txt");
for (int i = 0; i < 10; i )
{
for (int j = 0; j < 10; j )
{
**WHAT I SHOULD PUT HERE**
}
}
reader.Close();
}
Ответ №1:
Вы должны выполнить следующее (код с моими комментариями):
var map = new int[10, 10];
using (var reader = new StreamReader("Lode.txt")) // using will call close automatically
{
for (var i = 0; i < 10; i )
{
var line = reader.ReadLine(); // read one line from file
for (var j = 0; j < 10; j )
{
map[i, j] = Int32.Parse(line[j].ToString()); // get one symbol from current line and convert it to int
}
}
}
Комментарии:
1. Ну, мое консольное приложение пусто после этого кода. Я не знаю, почему
2. что вы имеете в виду? вы пытались печатать
map
на консоль после инициализации?3. Ну, может быть, я тупой, но я не знаю, как… Я совсем новичок
4. for (var i = 0; i < 10; i ) { for (var j = 0; j < 10; j ) { Консоль. Написать(сопоставить[i, j]); } Консоль. WriteLine(); }
5. Спасибо за помощь… Интересно, смогу ли я скрыть эту «игровую доску», и после попадания они появятся по отдельности.
Ответ №2:
Вы можете попробовать с небольшим LINQ следующим образом:
static void Main(string[] args)
{
string filePath = @"Lode.txt";
// Read file contents and store it into a local variable
string fileContents = File.ReadAllText(filePath);
/* Split by CR-LF in a windows system,
then convert it into a list of chars
and then finally do a int.Parse on them
*/
int[][] map = fileContents.Split('r', 'n')
.Select(x => x.ToList())
.Select(x => x.Select(y => int.Parse(new string(y, 1))).ToArray())
.ToArray();
}