我编程已经很久了。我正在VB.NET中编写一个表单,并使用StreamReader读取文本文件并填充2D数组。这是文本文件:
あかさたなはまやらわん
いきしちにひみ り
うくすつぬふむゆる
えけせてねへめ れ
おこそとのほもよろを
这是循环,它在Load事件中。
Dim Line As String
Dim Row As Integer = 0
Using sReader As New IO.StreamReader("KanaTable.txt")
Do
Line = sReader.ReadLine
For i = 0 To Line.Length - 1
KanaTable(Row, i) = Line(i)
Next
Row += 1
Loop Until sReader.EndOfStream
End Using
问题是,一旦For循环中的i达到10,它就会完成循环并跳过其他行,即使我有一个断点。你能告诉我这里可能会发生什么吗?
答案 0 :(得分:1)
我已经弄明白了这个问题,这很简单。 KanaTable的数组声明:
Dim KanaTable(4, 9) As Char
应该是
Dim KanaTable(4, 10) As Char
因为数组中的空间少于应有的空间,调试器必须抛出一个我无法看到的IndexOutOfRange,因为,愚蠢的Windows bug(感谢Bradley Uffner指出这个bug) 。)
答案 1 :(得分:0)
如果你可以使用一个数组数组或一个数组列表(List(Of Char())
),你可以将它归结为一行代码:
Dim KanaTable()() As Char = IO.File.ReadLines("KanaTable.txt").Select(Function(line) line.ToCharArray()).ToArray()
如果这对您来说太复杂,我们至少可以简化现有代码:
Dim KanaTable As New List(Of Char())
Dim Line As String
Using sReader As New IO.StreamReader("KanaTable.txt")
Line = sReader.ReadLine()
While Line IsNot Nothing
KanaTable.Add(Line.ToCharArray())
Line = sReader.ReadLine()
End While
End Using
答案 2 :(得分:-1)
我无法立即看到错误,但您可以尝试调整代码:
Using reader As New IO.StreamReader("KanaTable.txt")
Do
line= reader.ReadLine()
If line = Nothing Then
Exit Do
End If
For i = 0 To Line.Length - 1
KanaTable(Row, i) = Line(i)
Next
Row += 1
Loop
End Using