vb.net 编程调试求助
我把下面的源代码放在 2005中调试时,程序显示“lstoutput1”、“sw”、“sr”为“未声明名称”,当在Form中加了一个名称为“lstoutput1”ListBox后,第一个错误消失。本人不是学计算机的,请高手帮忙调试一下,数据输入输出应该如何处理?Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim NTP, NCH, NPR, NDM, Fix, rau1, counter1 As Integer
NTP = 20
NCH = 10
NPR = 20
NDM = 10
Fix = 1000
rau1 = 2048 * 2
Dim raul_0 = 1.0E-32
Dim rau1_10 As Integer = 10 * 2
Dim rau1_20 As Integer = 20 * 2
Dim rau1_100 As Integer = 100 * 2
Dim rau1_200 As Integer = 200 * 2
Dim rau_mode As Integer = 1
Dim rau1_4 As Integer = 4
counter1 = 0
Dim ich(rau1_10), ics(rau1_10) As Integer
Dim jet(rau1_20), jf(rau1_20), jff(rau1_20), jps(rau1_20) As Integer
Dim kdc(rau1_10), kdcw(rau1_10) As Integer
Dim xee(rau1_10), xerc(rau1_10) As Double
Dim xerp(rau1_20) As Double
Dim xsc(rau1_20) As Double
Dim ika(rau1_100) As Integer
Dim jia(rau1_200) As Integer
Dim xea(rau1_200) As Double
Dim kabc(rau1), kbbc(rau1), kcbc(rau1) As Integer
Dim energy_rau(rau1_4) As Double
Dim fmtStr1 As String = "{0,-3}{1,-3}{2,-3}{3,-3}{4,-4}{5,-5}{6,-5}{7,-5}{8,-5}{9,-5}{10,-5}{11,-5}{12,-8:N2}{13,-8:N2}{14,-14}{15,-14}"
Dim i, j, k As Integer
For i = 0 To NCH
ich(i) = ics(i) = 0
Next
For i = 0 To NPR
jet(i) = jf(i) = jff(i) = jps(i) = 0
Next
For i = 0 To NDM
kdc(i) = kdcw(i) = 0
Next
For i = 0 To NCH
xee(i) = xerc(i) = 0.0
Next
For i = 0 To NPR
xerp(i) = 0.0
Next
For i = 0 To NTP
xsc(i) = 0.0
Next
For i = 0 To NCH
For j = 0 To NDM
ika(i * (NCH + 1) + j) = 0
Next
Next
For i = 0 To NPR
For j = 0 To NCH
jia(i * (NCH + 1) + j) = 0
Next
Next
For i = 0 To NDM
For j = 0 To NTP
xea(i * (NTP + 1) + j) = 0.0
Next
Next
For i = 0 To NTP
For j = 0 To NPR
kabc(i * (NPR + 1) + j) = kbbc(i * (NPR + 1) + j) = kcbc(i * (NPR + 1) + j) = 0
Next
Next
Dim icht(rau1), jett(rau1) As Integer
Dim NR, NF As Integer
' Read data
NR = 1
NF = 10
ReadLine(icht, xsc, jett, NCH, NTP, NR, NF)
NR = 2
NF = 10
ReadLine(icht, xsc, jett, NCH, NTP, NR, NF)
NR = 3
NF = 20
ReadLine(icht, xsc, jett, NCH, NTP, NR, NF)
NR = 4
NF = 20
ReadLine(icht, xsc, jett, NCH, NTP, NR, NF)
NR = 5
NF = 20
ReadLine(icht, xsc, jett, NCH, NTP, NR, NF)
ReadEnergy(energy_rau)
ShowHeaderEnergy(energy_rau)
ShowHeader()
' End Read
Dim na, io, mode, a, b As Integer
na = 1
mode = 1
Do While (rau_mode < 5)
If (rau_mode = 1) Then
a = 0
b = 0
End If
If (rau_mode = 2) Then
a = 0
b = 1
End If
If (rau_mode = 3) Then
a = 1
b = 0
End If
If (rau_mode = 4) Then
a = 1
b = 1
End If
For i = 1 To NCH
ich(i) = icht(a * (NCH + 1) + i)
If counter1 = 0 Then
End If
Next
For i = 1 To NTP
jet(jett(b * (NTP + 1) + i)) = Int((i - 1) / 2) + 1
Next
Dim i1, ib, ja, jab, jdb, jd, jeb, je, ks As Integer
Dim xr, xs As Double
Dim choices_made, choices_solved As Integer
For i1 = 1 To 3
ib = i1 - 1
For jab = 1 To 3
ja = jab - 1
For jdb = 1 To 3
jd = jdb - 1
For jeb = 1 To 3
je = jeb - 1
xr = 0.0
xs = 0.0
ks = 0
choices_made = 0
choices_solved = 0
For i = 1 To NCH
xerc(i) = 1.1
xee(i) = 0.0
ics(i) = 0
Next
For k = 0 To NDM
kdc(k) = 0
kdcw(k) = kdc(k)
Next
For j = 0 To NPR
If i1 = 1 Then
xerp(j) = energy_rau(i1)
End If
If i1 = 2 Then
xerp(j) = energy_rau(i1)
End If
If i1 = 3 Then
xerp(j) = energy_rau(i1)
End If
jf(j) = 0
jff(j) = 0
jps(j) = 0
Next
For i = 1 To NCH
For j = 1 To NDM
ika(i * (NDM + 1) + j) = 1
If (jd = 1) Then
If (i < j) Then
ika(i * (NDM + 1) + j) = 0
End If
End If
If (jd = 2) Then
If (i <> j) Then
ika(i * (NDM + 1) + j) = 0
End If
End If
Next
Next
For i = 1 To NPR
For j = 1 To NCH
jia(i * (NCH + 1) + j) = 0
If (ja = 1) Then
If ((i - j) <= (i / 2)) Then
jia(i * (NCH + 1) + j) = 1
End If
ElseIf (ja = 2) Then
If (i = (2 * j)) Then
jia(i * (NCH + 1) + j) = 1
jia((i - 1) * (NCH + 1) + j) = 1
End If
Else
jia(i * (NCH + 1) + j) = 1
End If
Next
Next
Dim xxa As Double
For i = 1 To NDM
For j = 1 To NTP
xea(i * (NTP + 1) + j) = 0.55
If (je = 1) Then
GoTo Continue1
End If
xxa = i
If (je = 0) Then
xea(i * (NTP + 1) + j) = xxa / 10.0
Else
xea(i * (NTP + 1) + j) = (11.0 - xxa) / 10.0
End If
Continue1:
Next
Next
Dim lt, ltt As Integer
For lt = 1 To NTP
For i = 1 To NCH
If (ich(i) <> lt) Then
GoTo Continue2
End If
ics(i) = 1
Continue2:
Next
For j = 1 To NPR
If (jet(j) = lt) Then
jps(j) = 1
End If
Next
Dim super As Double
For j = 1 To NPR
If (jps(j) <> 1) Then
GoTo Continue3
End If
If ((na = 2) Or (na = 4)) Then
If (jf(j) <> 0) Then
jff(j) = jf(j)
GoTo Continue3
End If
End If
super = 100000.0
For i = 1 To NCH
If (ics(i) <> 1) Then
GoTo Continue4
End If
If (jia(j * (NCH + 1) + i) = 0) Then
GoTo Continue4
End If
If ((jf(j) = 0) Or (jf(j) = i)) Then
If (xerc(i) - xee(i) > super Or Math.Abs(xerc(i) - xee(i) - super) < raul_0) Then
GoTo Continue4
End If
super = xerc(i) - xee(i)
jff(j) = i
GoTo Continue4
End If
If (xerp(j) + xerc(i) - xee(i) > super Or Math.Abs(xerp(j) + xerc(i) - xee(i) - super) < raul_0) Then
GoTo Continue4
Else
super = xerp(j) + xerc(i) - xee(i)
jff(j) = i
End If
Continue4:
Next
Continue3:
Next
For j = 1 To NPR
jf(j) = jff(j)
jff(j) = 0
Next
ltt = lt - 1
If (lt = 1) Then
ltt = 1
End If
Dim Val As Double
For k = 1 To NDM
If ((na = 3) Or (na = 4)) Then
If (kdc(k) <> 0) Then
kdcw(k) = kdc(k)
GoTo Continue5
End If
End If
super = 1000.0
For i = 1 To NCH
If (ics(i) <> 1) Then
GoTo Continue6
End If
If (ika(i * (NDM + 1) + k) = 0) Then
GoTo Continue6
End If
If ((kdc(k) = 0) Or (kdc(k) = i)) Then
If (xerc(i) - xee(i) > super Or Math.Abs(xerc(i) - xee(i) - super) < raul_0) Then
GoTo Continue6
End If
super = xerc(i) - xee(i)
kdcw(k) = i
ElseIf ((Val = xerc(i) - xee(i) - (xea(k * (NTP + 1) + ltt) * xsc(ltt))) > super Or Math.Abs(Val - super) < raul_0) Then
GoTo Continue6
Else
super = xerc(i) - xee(i) - (xea(k * (NTP + 1) + ltt) * xsc(ltt))
kdcw(k) = i
End If
Continue6:
Next
Continue5:
Next
For k = 1 To NDM
kdc(k) = kdcw(k)
If (kdc(k) <> 0) Then
kdcw(k) = 0
GoTo Continue7
End If
xr = xr + (xea(k * (NTP + 1) + lt) * xsc(lt))
ks = ks + 1
kdcw(k) = 0
Continue7:
Next
For i = 1 To NCH
If (ics(i) = 0) Then
GoTo Continue8
End If
xerc(i) = 0.0
For j = 1 To NPR
If (jps(j) <> 1) Then
GoTo Continue9
End If
If (jf(j) <> i) Then
GoTo Continue9
End If
xerc(i) = xerc(i) + xerp(j)
Continue9:
Next
For k = 1 To NDM
If (ika(i * (NDM + 1) + k) = 0) Then
GoTo Continue10
End If
If (kdc(k) <> i) Then
GoTo Continue10
End If
xee(i) = xee(i) + (xsc(lt) * xea(k * (NTP + 1) + lt))
Continue10:
Next
Continue8:
Next
Dim i_solved_a_problem As Integer
For i = 1 To NCH
i_solved_a_problem = 0
If (ics(i) <> 1) Then
GoTo Continue11
End If
If (xerc(i) > xee(i) And xerc(i) - xee(i) > raul_0) Then
GoTo Continue11
End If
xs = xs + xee(i) - xerc(i)
ics(i) = 2
For j = 1 To NPR
If (jf(j) <> i) Then
GoTo Continue12
End If
jps(j) = 2
i_solved_a_problem = i_solved_a_problem + 1
Continue12:
Next
If ((na = 3) Or (na = 4)) Then
For k = 1 To NDM
If (kdc(k) = i) Then
kdcw(k) = 1
End If
Next
End If
choices_made = choices_made + 1
If (i_solved_a_problem > 0) Then
choices_solved = choices_solved + 1
End If
Continue11:
Next
For i = 1 To NCH
kabc(lt * (NCH + 1) + i) = ics(i)
Next
For k = 1 To NDM
kbbc(lt * (NDM + 1) + k) = kdc(k)
If (kdcw(k) <> 0) Then
kdc(k) = 0
End If
kdcw(k) = 0
Next
For j = 1 To NPR
kcbc(lt * (NPR + 1) + j) = jf(j)
If (jps(j) = 0) Then
kcbc(lt * (NPR + 1) + j) = -1
ElseIf (jps(j) = 1) Then
GoTo Continue13
Else
kcbc(lt * (NPR + 1) + j) = 1000
End If
Continue13:
Next
Next
Dim kz, ky, kx, kw, kv, ku, kt As Integer
kz = 0
ky = 0
kx = 0
kw = 0
kv = 0
ku = 0
kt = 0
For i = 1 To NTP
For j = 1 To NCH
If (kabc(i * (NCH + 1) + j) <> 1) Then
GoTo Continue14
End If
ky = ky + 1
If (i <> NTP) Then
GoTo Continue14
End If
kz = kz + 1
Continue14:
Next
Next
For i = 2 To NTP
For j = 1 To NDM
If (kbbc(i * (NDM + 1) + j) = kbbc((i - 1) * (NDM + 1) + j)) Then
GoTo Continue15
End If
kx = kx + 1
Continue15:
Next
Next
For i = 1 To NTP
For j = 1 To NPR
If (kcbc(i * (NPR + 1) + j) = -1) Then
GoTo Continue16
End If
If (kcbc(i * (NPR + 1) + j) = 1000) Then
If (i <> NTP) Then
GoTo Continue16
Else
kw = kw + 1
End If
ElseIf (kcbc(i * (NPR + 1) + j) = 0) Then
ku = ku + 1
Else
kt = kt + 1
End If
Continue16:
Next
Next
kw = NPR - kw
For i = 2 To NTP
For j = 1 To NPR
If (kcbc(i * (NPR + 1) + j) <> kcbc((i - 1) * (NPR + 1) + j)) Then
kv = kv + 1
End If
Next
Next
lstoutput1.Items.Add(String.Format(fmtStr1, ib, ja, jd, je, _
kz, ky, kx, kw, kv, ku, kt, ks, xr, xs, _
choices_made, choices_solved))
counter1 += 1
sw.WriteLine(String.Format(fmtStr1, ib, ja, jd, je, _
kz, ky, kx, kw, kv, ku, kt, ks, xr, xs, _
choices_made, choices_solved))
If (io = 1) Then
GoTo Continue17
End If
Continue17:
Next
Next
Next
Next
lstoutput1.Items.Add("Number of records printed 3*3*3*3 rau_mode = " & rau_mode)
rau_mode = rau_mode + 1
Loop
lstoutput1.Items.Add(" ")
lstoutput1.Items.Add("Number of records printed 3*3*3*3 = " & counter1)
sw.Close()
End Sub
Sub ShowHeaderEnergy(ByRef energy_rau() As Double)
Dim fmtStr As String = "{0,-7}{1,-5}{2,-5}{3,-5}"
lstoutput1.Items.Add(String.Format(fmtStr, "Energy ", energy_rau(1), _
energy_rau(2), _
energy_rau(3)))
sw.WriteLine(String.Format(fmtStr, "Energy ", energy_rau(1), _
energy_rau(2), _
energy_rau(3)))
End Sub
Sub ShowHeader()
Dim fmtStr As String = "{0,-3}{1,-3}{2,-3}{3,-3}{4,-4}{5,-5}{6,-5}{7,-5}{8,-5}{9,-5}{10,-5}{11,-5}{12,-8}{13,-8}{14,-14}{15,-14}"
lstoutput1.Items.Add(String.Format(fmtStr, "ib", "ja", "jd", "je", _
"KZ", "KY", "KX", "KW", "KV", "KU", "KT", "KS", "XR", "XS", _
"madeChoices ", "solvedChoices"))
sw.WriteLine(String.Format(fmtStr, "ib", "ja", "jd", "je", _
"KZ", "KY", "KX", "KW", "KV", "KU", "KT", "KS", "XR", "XS", _
"madeChoices ", "solvedChoices"))
End Sub
Sub ReadLine(ByRef icht() As Integer, ByRef xsc() As Double, ByRef jett() As Integer, ByVal NCH As Integer, ByVal NTP As Integer, ByVal NR As Integer, ByVal NF As Integer)
Dim name As String, i As Integer
Dim commaNumber As Integer
name = sr.ReadLine
For i = 1 To NF
If i = NF Then
If (NR = 1 Or NR = 2) Then
icht((NR - 1) * (NCH + 1) + i) = CInt(name)
End If
If (NR = 3) Then
xsc(i) = CDbl(name)
End If
If (NR = 4 Or NR = 5) Then
jett((NR - 4) * (NTP + 1) + i) = CInt(name)
End If
End If
If i < NF Then
commaNumber = name.IndexOf(Chr(32))
If (NR = 1 Or NR = 2) Then
icht((NR - 1) * (NCH + 1) + i) = CInt(name.Substring(0, commaNumber))
End If
If (NR = 3) Then
xsc(i) = CDbl(name.Substring(0, commaNumber))
End If
If (NR = 4 Or NR = 5) Then
jett((NR - 4) * (NTP + 1) + i) = CInt(name.Substring(0, commaNumber))
End If
name = name.Substring(commaNumber + 1)
End If
Next
End Sub
Sub ReadEnergy(ByRef energy_rau() As Double)
Dim name As String, i As Integer
Dim commaNumber As Integer
name = sr.ReadLine
For i = 1 To 3
If i = 3 Then
energy_rau(i) = CDbl(name)
End If
If i < 3 Then
commaNumber = name.IndexOf(Chr(32))
energy_rau(i) = CDbl(name.Substring(0, commaNumber))
name = name.Substring(commaNumber + 1)
End If
Next
End Sub
End Class