vs 2008 window7
实现的功能:是将txt 文档里面的8行数据读入并放到一个2维的数组里面,2维数组是8行1023列
但是在运行的时候总是显示错误!
values(j, i) = Double.Parse(valuesString(i * 1023 + j))输入字符串的格式不正确。
Public Function GetValues1(ByVal file As String, ByVal values(,) As Double) As Double
Dim line As String = String.Empty '定义空字符
Using reader As New System.IO.StreamReader(file) '读取文件
line = reader.ReadToEnd '
End Using
Dim valuesString As String() = System.Text.RegularExpressions.Regex.Split(line, "\s+") 'split函数将字符串分割,用"\s+"隔开。
For i As Integer = 0 To 7
For j As Integer = 0 To 1023
values(j, i) = Double.Parse(valuesString(i * 1023 + j)) '将字符转换成double类型
Next
Next
End Function
------解决方案--------------------
学会调适吧,你的代码是有逻辑错误的
2维数组是8行1023列
那你的循环体应该是
For i As Integer = 0 To 7
For j As Integer = 0 To 1022
values(j, i) = Double.Parse(valuesString(i * 1023 + j)) '将字符转换成double类型
Next
Next
但这样的错误应该是提示下标越界,而且我也搞不清楚为什么一行是1023,而不是1024?
你的提示就是数据类型不对,说明文档里有特殊符号,看看出错的时候i,j的值,找到valuesstring里这个值是什么吧
------解决方案--------------------
你的文档是逗号分隔还是空格分隔?
Dim valuesString As String() = System.Text.RegularExpressions.Regex.Split(line, "\s+") 'split函数将字符串分割,用"\s+"隔开。
你这句话可是说用空格分隔,"\s+" 表示一个或多个空格,用是用逗号分隔就 改成 “,”
------解决方案--------------------
Dim Path1 As String = "D:\result.txt"
Dim AllLines As String() = File.ReadAllLines(Path1)
直接把文本全部导入到数组里。
------解决方案--------------------
Public Class Test
Public Shared Sub Main()
Dim path As String = "c:\MyTest.txt" ' 文件路径
Dim sr As StreamReader = Nothing
Dim result(8, 1024) As Double
Try
sr = New StreamReader(path)
Dim line As String = String.Empty '定IN空字符
Dim i As Integer = 0
Do While sr.Peek() >= 0
line = sr.ReadLine()
Dim lineCell() As String = line.split(",")
For j As Integer = 0 To lineCell.length
Dim number As Double
If Double.TryParse(lineCell(j).Trim(), number) Then
result(i, j) = number
Else
Console.WriteLine("line:[" + (i + 1) + "], column[" + (j + 1) + "], Value[" + lineCell(j) + "] cannot conver to Double.")