我是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
我真的不知道出了什么问题。
答案 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。