Vb.net 转换字符串错误

Vb.net 转换字符串错误,vb.net,debugging,Vb.net,Debugging,每当我试着运行我的程序时,我总是得到一个错误 从字符串“59 60 65 75”转换为类型“Double”无效 我从一个名为scores.txt的文件中获取数据,该文件包含59、60、65、75个整数。我不太确定如何纠正这个问题,VB提出了一些建议,比如确保值小于无穷大(很明显是这样),并确保源类型可转换为目标类型。(我不确定如何调试这个)有什么建议吗?这是我的密码 Public Class Form1 Private Sub Button1_Click(ByVal sender As

每当我试着运行我的程序时,我总是得到一个错误

从字符串“59 60 65 75”转换为类型“Double”无效

我从一个名为scores.txt的文件中获取数据,该文件包含59、60、65、75个整数。我不太确定如何纠正这个问题,VB提出了一些建议,比如确保值小于无穷大(很明显是这样),并确保源类型可转换为目标类型。(我不确定如何调试这个)有什么建议吗?这是我的密码

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnanalyze.Click


        Dim scores() As String =
            IO.File.ReadAllLines("scores.txt")
        Dim intdata(scores.length - 1) As Double 'declare an array of type double to store the data of text file

        Dim mean As Double
        Dim sdeviation As Double = 0
        For i As Integer = 0 To scores.length - 1
            intdata(i) = CDbl(scores(i))

        Next
        mean = intdata.Average 'mean is the average of the numbers in the collection
        For j As Integer = 0 To intdata.Length - 1
            sdeviation = +Math.Pow(intdata(j) - mean, 2)

        Next
        sdeviation = sdeviation / (intdata.Length)
        sdeviation = Math.Sqrt(sdeviation)
        lblmean.text = FormatNumber(mean)
        lblsd.text = FormatNumber(sdeviation)
        lblnumofexams.text = scores.length
        Dim query = From score In scores
                    Let Sscore = score
                    Let grade = getGrade(score, mean, sdeviation)
                    Select Sscore, grade
        dvgoutput.datasource = query.tolist
        dvgoutput.currentcell = Nothing
        dvgoutput.columns("Sscore").headertext = "score"
        dvgoutput.columns("grade").headertext = "grade"




    End Sub
    Public Function getGrade(ByVal ES, ByVal m, ByVal s) As String
        If ES >= m + (1.5 * s) Then
            Return "A"
        End If
        If m + (0.5 * s) < +ES And ES < m + (1.5 * s) Then
            Return "B"
        End If

        If m - (0.5 * s) <= ES And ES < m + (0.5 * s) Then
            Return "C"
        End If

        If m - (1.5 * s) <= ES And ES < +m - (0.5 * s) Then
            Return "D"
        End If

        If ES < m - (1.5 * s) Then
            Return "F"
        End If
        Return ""
    End Function

End Class
公共类表单1
私有子按钮1\u单击(ByVal发送者作为System.Object,ByVal e作为System.EventArgs)处理btnanalyze。单击
Dim scores()作为字符串=
IO.File.ReadAllLines(“scores.txt”)
Dim intdata(scores.length-1)As Double'声明类型为Double的数组以存储文本文件的数据
我的意思是双重的
尺寸偏差为双精度=0
对于i,整数=0到分数。长度-1
intdata(i)=CDbl(得分(i))
下一个
平均值=intdata.Average“平均值”是集合中数字的平均值
对于j,整数=0到intdata.Length-1
偏差=+数学功率(intdata(j)-平均值,2)
下一个
sdeviation=sdeviation/(intdata.Length)
sdeviation=Math.Sqrt(sdeviation)
lblmean.text=格式编号(平均值)
lblsd.text=格式编号(sdeviation)
lblnumofexams.text=scores.length
Dim query=来自分数中的分数
让Sscore=得分
Let grade=getGrade(分数、平均值、偏差)
选择sCore、grade
dvgoutput.datasource=query.tolist
dvgoutput.currentcell=无
dvgoutput.columns(“score”).headertext=“分数”
dvgoutput.列(“等级”).headertext=“等级”
端接头
作为字符串的公共函数getGrade(ByVal ES、ByVal m、ByVal s)
如果ES>=m+(1.5*s),则
返回“A”
如果结束
如果m+(0.5*s)<+ES和ES如果m-(0.5*s)您需要在文本文件中每行有一个分数。

我在这一行“intdata(I)=CDbl(scores(I))”上得到一个错误,听起来它读取的是所有数字,而不是一个。因此无法转换它。弄清楚如何一次输入一个数字。如果文本文件的每一行都有一个分数怎么办?