从文件读取值到数组时,C# 表现得很奇怪

发布于 2024-08-31 19:39:30 字数 9712 浏览 6 评论 0原文

这是我的文件的结构:

1111111111111111111111111
2222222222222222222222222
3333333333333333333333333
4444444444444444444444444
5555555555555555555555555
6666666666666666666666666
7777777777777777777777777
8888888888888888888888888
9999999999999999999999999
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000

这是我用来将其读入数组的代码:

    using (StreamReader reader = new StreamReader(mapPath))
    {
        string line;
        for (int i = 0; i < iMapHeight; i++)
        {
            if ((line = reader.ReadLine()) != null)
            {
                for (int j = 0; j < iMapWidth; j++)
                {
                    iMap[i, j] = line[j];
                }
            }
        }
    }

我已经做了一些调试,并且 line[j] 正确地迭代了当前的每个字符读行。问题出在 iMap[i, j] 上。执行此代码块后,这就是 iMap 的内容:

-       iMap    {int[14, 25]}   int[,]
        [0, 0]  49  int
        [0, 1]  49  int
        [0, 2]  49  int
        [0, 3]  49  int
        [0, 4]  49  int
        [0, 5]  49  int
        [0, 6]  49  int
        [0, 7]  49  int
        [0, 8]  49  int
        [0, 9]  49  int
        [0, 10] 49  int
        [0, 11] 49  int
        [0, 12] 49  int
        [0, 13] 49  int
        [0, 14] 49  int
        [0, 15] 49  int
        [0, 16] 49  int
        [0, 17] 49  int
        [0, 18] 49  int
        [0, 19] 49  int
        [0, 20] 49  int
        [0, 21] 49  int
        [0, 22] 49  int
        [0, 23] 49  int
        [0, 24] 49  int
        [1, 0]  50  int
        [1, 1]  50  int
        [1, 2]  50  int
        [1, 3]  50  int
        [1, 4]  50  int
        [1, 5]  50  int
        [1, 6]  50  int
        [1, 7]  50  int
        [1, 8]  50  int
        [1, 9]  50  int
        [1, 10] 50  int
        [1, 11] 50  int
        [1, 12] 50  int
        [1, 13] 50  int
        [1, 14] 50  int
        [1, 15] 50  int
        [1, 16] 50  int
        [1, 17] 50  int
        [1, 18] 50  int
        [1, 19] 50  int
        [1, 20] 50  int
        [1, 21] 50  int
        [1, 22] 50  int
        [1, 23] 50  int
        [1, 24] 50  int
        [2, 0]  51  int
        [2, 1]  51  int
        [2, 2]  51  int
        [2, 3]  51  int
        [2, 4]  51  int
        [2, 5]  51  int
        [2, 6]  51  int
        [2, 7]  51  int
        [2, 8]  51  int
        [2, 9]  51  int
        [2, 10] 51  int
        [2, 11] 51  int
        [2, 12] 51  int
        [2, 13] 51  int
        [2, 14] 51  int
        [2, 15] 51  int
        [2, 16] 51  int
        [2, 17] 51  int
        [2, 18] 51  int
        [2, 19] 51  int
        [2, 20] 51  int
        [2, 21] 51  int
        [2, 22] 51  int
        [2, 23] 51  int
        [2, 24] 51  int
        [3, 0]  52  int
        [3, 1]  52  int
        [3, 2]  52  int
        [3, 3]  52  int
        [3, 4]  52  int
        [3, 5]  52  int
        [3, 6]  52  int
        [3, 7]  52  int
        [3, 8]  52  int
        [3, 9]  52  int
        [3, 10] 52  int
        [3, 11] 52  int
        [3, 12] 52  int
        [3, 13] 52  int
        [3, 14] 52  int
        [3, 15] 52  int
        [3, 16] 52  int
        [3, 17] 52  int
        [3, 18] 52  int
        [3, 19] 52  int
        [3, 20] 52  int
        [3, 21] 52  int
        [3, 22] 52  int
        [3, 23] 52  int
        [3, 24] 52  int
        [4, 0]  53  int
        [4, 1]  53  int
        [4, 2]  53  int
        [4, 3]  53  int
        [4, 4]  53  int
        [4, 5]  53  int
        [4, 6]  53  int
        [4, 7]  53  int
        [4, 8]  53  int
        [4, 9]  53  int
        [4, 10] 53  int
        [4, 11] 53  int
        [4, 12] 53  int
        [4, 13] 53  int
        [4, 14] 53  int
        [4, 15] 53  int
        [4, 16] 53  int
        [4, 17] 53  int
        [4, 18] 53  int
        [4, 19] 53  int
        [4, 20] 53  int
        [4, 21] 53  int
        [4, 22] 53  int
        [4, 23] 53  int
        [4, 24] 53  int
        [5, 0]  54  int
        [5, 1]  54  int
        [5, 2]  54  int
        [5, 3]  54  int
        [5, 4]  54  int
        [5, 5]  54  int
        [5, 6]  54  int
        [5, 7]  54  int
        [5, 8]  54  int
        [5, 9]  54  int
        [5, 10] 54  int
        [5, 11] 54  int
        [5, 12] 54  int
        [5, 13] 54  int
        [5, 14] 54  int
        [5, 15] 54  int
        [5, 16] 54  int
        [5, 17] 54  int
        [5, 18] 54  int
        [5, 19] 54  int
        [5, 20] 54  int
        [5, 21] 54  int
        [5, 22] 54  int
        [5, 23] 54  int
        [5, 24] 54  int
        [6, 0]  55  int
        [6, 1]  55  int
        [6, 2]  55  int
        [6, 3]  55  int
        [6, 4]  55  int
        [6, 5]  55  int
        [6, 6]  55  int
        [6, 7]  55  int
        [6, 8]  55  int
        [6, 9]  55  int
        [6, 10] 55  int
        [6, 11] 55  int
        [6, 12] 55  int
        [6, 13] 55  int
        [6, 14] 55  int
        [6, 15] 55  int
        [6, 16] 55  int
        [6, 17] 55  int
        [6, 18] 55  int
        [6, 19] 55  int
        [6, 20] 55  int
        [6, 21] 55  int
        [6, 22] 55  int
        [6, 23] 55  int
        [6, 24] 55  int
        [7, 0]  56  int
        [7, 1]  56  int
        [7, 2]  56  int
        [7, 3]  56  int
        [7, 4]  56  int
        [7, 5]  56  int
        [7, 6]  56  int
        [7, 7]  56  int
        [7, 8]  56  int
        [7, 9]  56  int
        [7, 10] 56  int
        [7, 11] 56  int
        [7, 12] 56  int
        [7, 13] 56  int
        [7, 14] 56  int
        [7, 15] 56  int
        [7, 16] 56  int
        [7, 17] 56  int
        [7, 18] 56  int
        [7, 19] 56  int
        [7, 20] 56  int
        [7, 21] 56  int
        [7, 22] 56  int
        [7, 23] 56  int
        [7, 24] 56  int
        [8, 0]  57  int
        [8, 1]  57  int
        [8, 2]  57  int
        [8, 3]  57  int
        [8, 4]  57  int
        [8, 5]  57  int
        [8, 6]  57  int
        [8, 7]  57  int
        [8, 8]  57  int
        [8, 9]  57  int
        [8, 10] 57  int
        [8, 11] 57  int
        [8, 12] 57  int
        [8, 13] 57  int
        [8, 14] 57  int
        [8, 15] 57  int
        [8, 16] 57  int
        [8, 17] 57  int
        [8, 18] 57  int
        [8, 19] 57  int
        [8, 20] 57  int
        [8, 21] 57  int
        [8, 22] 57  int
        [8, 23] 57  int
        [8, 24] 57  int
        [9, 0]  48  int
        [9, 1]  48  int
        [9, 2]  48  int
        [9, 3]  48  int
        [9, 4]  48  int
        [9, 5]  48  int
        [9, 6]  48  int
        [9, 7]  48  int
        [9, 8]  48  int
        [9, 9]  48  int
        [9, 10] 48  int
        [9, 11] 48  int
        [9, 12] 48  int
        [9, 13] 48  int
        [9, 14] 48  int
        [9, 15] 48  int
        [9, 16] 48  int
        [9, 17] 48  int
        [9, 18] 48  int
        [9, 19] 48  int
        [9, 20] 48  int
        [9, 21] 48  int
        [9, 22] 48  int
        [9, 23] 48  int
        [9, 24] 48  int
        [10, 0] 48  int
        [10, 1] 48  int
        [10, 2] 48  int
        [10, 3] 48  int
        [10, 4] 48  int
        [10, 5] 48  int
        [10, 6] 48  int
        [10, 7] 48  int
        [10, 8] 48  int
        [10, 9] 48  int
        [10, 10]    48  int
        [10, 11]    48  int
        [10, 12]    48  int
        [10, 13]    48  int
        [10, 14]    48  int
        [10, 15]    48  int
        [10, 16]    48  int
        [10, 17]    48  int
        [10, 18]    48  int
        [10, 19]    48  int
        [10, 20]    48  int
        [10, 21]    48  int
        [10, 22]    48  int
        [10, 23]    48  int
        [10, 24]    48  int
        [11, 0] 48  int
        [11, 1] 48  int
        [11, 2] 48  int
        [11, 3] 48  int
        [11, 4] 48  int
        [11, 5] 48  int
        [11, 6] 48  int
        [11, 7] 48  int
        [11, 8] 48  int
        [11, 9] 48  int
        [11, 10]    48  int
        [11, 11]    48  int
        [11, 12]    48  int
        [11, 13]    48  int
        [11, 14]    48  int
        [11, 15]    48  int
        [11, 16]    48  int
        [11, 17]    48  int
        [11, 18]    48  int
        [11, 19]    48  int
        [11, 20]    48  int
        [11, 21]    48  int
        [11, 22]    48  int
        [11, 23]    48  int
        [11, 24]    48  int
        [12, 0] 48  int
        [12, 1] 48  int
        [12, 2] 48  int
        [12, 3] 48  int
        [12, 4] 48  int
        [12, 5] 48  int
        [12, 6] 48  int
        [12, 7] 48  int
        [12, 8] 48  int
        [12, 9] 48  int
        [12, 10]    48  int
        [12, 11]    48  int
        [12, 12]    48  int
        [12, 13]    48  int
        [12, 14]    48  int
        [12, 15]    48  int
        [12, 16]    48  int
        [12, 17]    48  int
        [12, 18]    48  int
        [12, 19]    48  int
        [12, 20]    48  int
        [12, 21]    48  int
        [12, 22]    48  int
        [12, 23]    48  int
        [12, 24]    48  int
        [13, 0] 48  int
        [13, 1] 48  int
        [13, 2] 48  int
        [13, 3] 48  int
        [13, 4] 48  int
        [13, 5] 48  int
        [13, 6] 48  int
        [13, 7] 48  int
        [13, 8] 48  int
        [13, 9] 48  int
        [13, 10]    48  int
        [13, 11]    48  int
        [13, 12]    48  int
        [13, 13]    48  int
        [13, 14]    48  int
        [13, 15]    48  int
        [13, 16]    48  int
        [13, 17]    48  int
        [13, 18]    48  int
        [13, 19]    48  int
        [13, 20]    48  int
        [13, 21]    48  int
        [13, 22]    48  int
        [13, 23]    48  int
        [13, 24]    48  int

抱歉,格式很差,但它很大 :P 我不知道这些值是从哪里得到的,有人有解释吗?谢谢 :)

This is the structure of my file:

1111111111111111111111111
2222222222222222222222222
3333333333333333333333333
4444444444444444444444444
5555555555555555555555555
6666666666666666666666666
7777777777777777777777777
8888888888888888888888888
9999999999999999999999999
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000

And this is the code I'm using to read it into an array:

    using (StreamReader reader = new StreamReader(mapPath))
    {
        string line;
        for (int i = 0; i < iMapHeight; i++)
        {
            if ((line = reader.ReadLine()) != null)
            {
                for (int j = 0; j < iMapWidth; j++)
                {
                    iMap[i, j] = line[j];
                }
            }
        }
    }

I have done some debugging, and line[j] correctly iterates through each character in the currently read line. The problem lies with iMap[i, j]. After this block of code executes, this is the contents of iMap:

-       iMap    {int[14, 25]}   int[,]
        [0, 0]  49  int
        [0, 1]  49  int
        [0, 2]  49  int
        [0, 3]  49  int
        [0, 4]  49  int
        [0, 5]  49  int
        [0, 6]  49  int
        [0, 7]  49  int
        [0, 8]  49  int
        [0, 9]  49  int
        [0, 10] 49  int
        [0, 11] 49  int
        [0, 12] 49  int
        [0, 13] 49  int
        [0, 14] 49  int
        [0, 15] 49  int
        [0, 16] 49  int
        [0, 17] 49  int
        [0, 18] 49  int
        [0, 19] 49  int
        [0, 20] 49  int
        [0, 21] 49  int
        [0, 22] 49  int
        [0, 23] 49  int
        [0, 24] 49  int
        [1, 0]  50  int
        [1, 1]  50  int
        [1, 2]  50  int
        [1, 3]  50  int
        [1, 4]  50  int
        [1, 5]  50  int
        [1, 6]  50  int
        [1, 7]  50  int
        [1, 8]  50  int
        [1, 9]  50  int
        [1, 10] 50  int
        [1, 11] 50  int
        [1, 12] 50  int
        [1, 13] 50  int
        [1, 14] 50  int
        [1, 15] 50  int
        [1, 16] 50  int
        [1, 17] 50  int
        [1, 18] 50  int
        [1, 19] 50  int
        [1, 20] 50  int
        [1, 21] 50  int
        [1, 22] 50  int
        [1, 23] 50  int
        [1, 24] 50  int
        [2, 0]  51  int
        [2, 1]  51  int
        [2, 2]  51  int
        [2, 3]  51  int
        [2, 4]  51  int
        [2, 5]  51  int
        [2, 6]  51  int
        [2, 7]  51  int
        [2, 8]  51  int
        [2, 9]  51  int
        [2, 10] 51  int
        [2, 11] 51  int
        [2, 12] 51  int
        [2, 13] 51  int
        [2, 14] 51  int
        [2, 15] 51  int
        [2, 16] 51  int
        [2, 17] 51  int
        [2, 18] 51  int
        [2, 19] 51  int
        [2, 20] 51  int
        [2, 21] 51  int
        [2, 22] 51  int
        [2, 23] 51  int
        [2, 24] 51  int
        [3, 0]  52  int
        [3, 1]  52  int
        [3, 2]  52  int
        [3, 3]  52  int
        [3, 4]  52  int
        [3, 5]  52  int
        [3, 6]  52  int
        [3, 7]  52  int
        [3, 8]  52  int
        [3, 9]  52  int
        [3, 10] 52  int
        [3, 11] 52  int
        [3, 12] 52  int
        [3, 13] 52  int
        [3, 14] 52  int
        [3, 15] 52  int
        [3, 16] 52  int
        [3, 17] 52  int
        [3, 18] 52  int
        [3, 19] 52  int
        [3, 20] 52  int
        [3, 21] 52  int
        [3, 22] 52  int
        [3, 23] 52  int
        [3, 24] 52  int
        [4, 0]  53  int
        [4, 1]  53  int
        [4, 2]  53  int
        [4, 3]  53  int
        [4, 4]  53  int
        [4, 5]  53  int
        [4, 6]  53  int
        [4, 7]  53  int
        [4, 8]  53  int
        [4, 9]  53  int
        [4, 10] 53  int
        [4, 11] 53  int
        [4, 12] 53  int
        [4, 13] 53  int
        [4, 14] 53  int
        [4, 15] 53  int
        [4, 16] 53  int
        [4, 17] 53  int
        [4, 18] 53  int
        [4, 19] 53  int
        [4, 20] 53  int
        [4, 21] 53  int
        [4, 22] 53  int
        [4, 23] 53  int
        [4, 24] 53  int
        [5, 0]  54  int
        [5, 1]  54  int
        [5, 2]  54  int
        [5, 3]  54  int
        [5, 4]  54  int
        [5, 5]  54  int
        [5, 6]  54  int
        [5, 7]  54  int
        [5, 8]  54  int
        [5, 9]  54  int
        [5, 10] 54  int
        [5, 11] 54  int
        [5, 12] 54  int
        [5, 13] 54  int
        [5, 14] 54  int
        [5, 15] 54  int
        [5, 16] 54  int
        [5, 17] 54  int
        [5, 18] 54  int
        [5, 19] 54  int
        [5, 20] 54  int
        [5, 21] 54  int
        [5, 22] 54  int
        [5, 23] 54  int
        [5, 24] 54  int
        [6, 0]  55  int
        [6, 1]  55  int
        [6, 2]  55  int
        [6, 3]  55  int
        [6, 4]  55  int
        [6, 5]  55  int
        [6, 6]  55  int
        [6, 7]  55  int
        [6, 8]  55  int
        [6, 9]  55  int
        [6, 10] 55  int
        [6, 11] 55  int
        [6, 12] 55  int
        [6, 13] 55  int
        [6, 14] 55  int
        [6, 15] 55  int
        [6, 16] 55  int
        [6, 17] 55  int
        [6, 18] 55  int
        [6, 19] 55  int
        [6, 20] 55  int
        [6, 21] 55  int
        [6, 22] 55  int
        [6, 23] 55  int
        [6, 24] 55  int
        [7, 0]  56  int
        [7, 1]  56  int
        [7, 2]  56  int
        [7, 3]  56  int
        [7, 4]  56  int
        [7, 5]  56  int
        [7, 6]  56  int
        [7, 7]  56  int
        [7, 8]  56  int
        [7, 9]  56  int
        [7, 10] 56  int
        [7, 11] 56  int
        [7, 12] 56  int
        [7, 13] 56  int
        [7, 14] 56  int
        [7, 15] 56  int
        [7, 16] 56  int
        [7, 17] 56  int
        [7, 18] 56  int
        [7, 19] 56  int
        [7, 20] 56  int
        [7, 21] 56  int
        [7, 22] 56  int
        [7, 23] 56  int
        [7, 24] 56  int
        [8, 0]  57  int
        [8, 1]  57  int
        [8, 2]  57  int
        [8, 3]  57  int
        [8, 4]  57  int
        [8, 5]  57  int
        [8, 6]  57  int
        [8, 7]  57  int
        [8, 8]  57  int
        [8, 9]  57  int
        [8, 10] 57  int
        [8, 11] 57  int
        [8, 12] 57  int
        [8, 13] 57  int
        [8, 14] 57  int
        [8, 15] 57  int
        [8, 16] 57  int
        [8, 17] 57  int
        [8, 18] 57  int
        [8, 19] 57  int
        [8, 20] 57  int
        [8, 21] 57  int
        [8, 22] 57  int
        [8, 23] 57  int
        [8, 24] 57  int
        [9, 0]  48  int
        [9, 1]  48  int
        [9, 2]  48  int
        [9, 3]  48  int
        [9, 4]  48  int
        [9, 5]  48  int
        [9, 6]  48  int
        [9, 7]  48  int
        [9, 8]  48  int
        [9, 9]  48  int
        [9, 10] 48  int
        [9, 11] 48  int
        [9, 12] 48  int
        [9, 13] 48  int
        [9, 14] 48  int
        [9, 15] 48  int
        [9, 16] 48  int
        [9, 17] 48  int
        [9, 18] 48  int
        [9, 19] 48  int
        [9, 20] 48  int
        [9, 21] 48  int
        [9, 22] 48  int
        [9, 23] 48  int
        [9, 24] 48  int
        [10, 0] 48  int
        [10, 1] 48  int
        [10, 2] 48  int
        [10, 3] 48  int
        [10, 4] 48  int
        [10, 5] 48  int
        [10, 6] 48  int
        [10, 7] 48  int
        [10, 8] 48  int
        [10, 9] 48  int
        [10, 10]    48  int
        [10, 11]    48  int
        [10, 12]    48  int
        [10, 13]    48  int
        [10, 14]    48  int
        [10, 15]    48  int
        [10, 16]    48  int
        [10, 17]    48  int
        [10, 18]    48  int
        [10, 19]    48  int
        [10, 20]    48  int
        [10, 21]    48  int
        [10, 22]    48  int
        [10, 23]    48  int
        [10, 24]    48  int
        [11, 0] 48  int
        [11, 1] 48  int
        [11, 2] 48  int
        [11, 3] 48  int
        [11, 4] 48  int
        [11, 5] 48  int
        [11, 6] 48  int
        [11, 7] 48  int
        [11, 8] 48  int
        [11, 9] 48  int
        [11, 10]    48  int
        [11, 11]    48  int
        [11, 12]    48  int
        [11, 13]    48  int
        [11, 14]    48  int
        [11, 15]    48  int
        [11, 16]    48  int
        [11, 17]    48  int
        [11, 18]    48  int
        [11, 19]    48  int
        [11, 20]    48  int
        [11, 21]    48  int
        [11, 22]    48  int
        [11, 23]    48  int
        [11, 24]    48  int
        [12, 0] 48  int
        [12, 1] 48  int
        [12, 2] 48  int
        [12, 3] 48  int
        [12, 4] 48  int
        [12, 5] 48  int
        [12, 6] 48  int
        [12, 7] 48  int
        [12, 8] 48  int
        [12, 9] 48  int
        [12, 10]    48  int
        [12, 11]    48  int
        [12, 12]    48  int
        [12, 13]    48  int
        [12, 14]    48  int
        [12, 15]    48  int
        [12, 16]    48  int
        [12, 17]    48  int
        [12, 18]    48  int
        [12, 19]    48  int
        [12, 20]    48  int
        [12, 21]    48  int
        [12, 22]    48  int
        [12, 23]    48  int
        [12, 24]    48  int
        [13, 0] 48  int
        [13, 1] 48  int
        [13, 2] 48  int
        [13, 3] 48  int
        [13, 4] 48  int
        [13, 5] 48  int
        [13, 6] 48  int
        [13, 7] 48  int
        [13, 8] 48  int
        [13, 9] 48  int
        [13, 10]    48  int
        [13, 11]    48  int
        [13, 12]    48  int
        [13, 13]    48  int
        [13, 14]    48  int
        [13, 15]    48  int
        [13, 16]    48  int
        [13, 17]    48  int
        [13, 18]    48  int
        [13, 19]    48  int
        [13, 20]    48  int
        [13, 21]    48  int
        [13, 22]    48  int
        [13, 23]    48  int
        [13, 24]    48  int

Sorry for the lame formatting, but it's huge :P
I have no idea where it's getting these values from, does anyone have an explanation? Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空心↖ 2024-09-07 19:39:30

这些是字符“0”、“1”等的 ASCII 值...

请使用此值:

iMap[i, j] = int.Parse(line[j].ToString());

如果您希望能够处理无效输入,您可能还需要使用 int.TryParse

These are the ASCII values of the character '0', '1' etc...

Use this instead:

iMap[i, j] = int.Parse(line[j].ToString());

You might also want to use int.TryParse if you want to be able to handle invalid input.

触ぅ动初心 2024-09-07 19:39:30

您正在从输入中读取字符并存储它们的 ASCII 值。如果您知道它们始终是数字,则在存储时只需从每个值中减去 48 即可。

You are reading characters from the input and storing their ASCII values. If you know they will always be digits, just subtract 48 from each value when storing it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文