如何从文件读取二维数组?

时间:2015-05-09 13:04:12

标签: vb.net

我是vb.net编程的新手,我想从文件中读取一个二维数组。我搜索了很多,但我无法弄清楚我该怎么做。有输入文件:

1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1

以下是代码部分:

Dim map As Integer(,)
Dim reader As StreamReader
    reader = IO.File.OpenText(folder + "\harta\harta.txt")
    Dim linie As String, i, j As Integer
    For i = 0 To 10
        For j = 0 To 12
            linie = reader.ReadLine()
            map(i, j) = linie.Substring(j, linie.IndexOf(" ")) 'here is my problem'
        Next j
    Next i
    reader.Close()

当我运行代码时,我收到以下错误:

未处理的类型' System.NullReferenceException'发生在WindowsApplication1.exe

编辑:

我尝试了另一种方法:

Dim reader As IO.StreamReader
    reader = IO.File.OpenText(folder + "\harta\harta.txt")
    Dim linie As String, i, j As Integer
    For i = 0 To 10
        linie = reader.ReadLine
        Dim parametrii As String() = linie.Split(" ")
        Dim parametru As String
        j = 0
        For Each parametru In parametrii
            map(i, j) = parametru 'i get the same error here'
            j += 1
        Next
    Next i

我真的不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

您正在阅读太多行...如果没有要读取的行,则ReadLine会返回Null引用。

您需要从0到10的ReadLine,并且对于每一行,使用split来获取列值。

此部分当前返回空引用:

linie.IndexOf(" ")

当你尝试这个时:

int a=x?1:0;                                                     // O_2__TER_1
a = x ? 1 : 0 ;                                                  // O_4__TER_2
a = x   ?   1   :   0   ;                                        // O_6__TER_3
a=((((*(*(*x))))?((1)):((0))));                                  // O_11__TER_4

if(x?1:0){;};                                                    // O_12__TER_5

a = (x)? (y? (z?1:4) : (z?2:3) ) : 1;                            // O_17__TER_9
b = x?y:x?1:0;                                                   // O_20__TER_11

a?
  b?
    c?
      d?
        d
      :
        e?
          e
        :
          f?
            f
          :
            g?
              g
            :
              -g
    :
      -c
  :
    -b
:
  -a;                                                            // O_31__TER_18

它会导致异常。 linie变量为null。