【问题标题】:Visual Basic, End of Statement Expected - array?Visual Basic,预期语句结束 - 数组?
【发布时间】:2017-12-08 00:03:23
【问题描述】:

我在尝试修复此程序的“预期语句结束”BC30205 错误时遇到问题,它是FCC Curves Calculation Program 的插值子例程。我正在尝试将 javascript 中的函数转换为 VB.NET。我已经添加了下面的代码。

'------- ITPLBV --------------------------------------------------------------------------------------------------
        'Interpolation subroutine
        'Arguments:
        'lx  Number of columns in table.
        'ly  Number of rows in table.
        'x   Column enumeration values.
        'y   Row enumeration values.
        'z   Data table.
        'n   Number of points to lookup.
        'u   Column values for lookup points.
        'v   Row values for lookup points.
        'w   Return result of lookups.

Private Sub Itplbv(lx As Double, ly As Double, x As Double, y As Double, z As Double, n As Double, u As Double, v As Double, w As Double)
    'declarations and initializations
    Dim lxm1, lxp1, lym1, lyp1, ixpv, iypv, k, ix, iy, imn, imx, jx, jy, jx1, jy1 As Double
    lxm1 = lxp1 = lym1 = lyp1 = ixpv = iypv = k = ix = iy = imn = imx = jx = jy = jx1 = jy1 = 0

    Dim za_row0 = {0, 0}
    Dim za_row1 = {0, 0}
    Dim za_row2 = {0, 0}
    Dim za_row3 = {0, 0}
    Dim za_row4 = {0, 0}
    Dim za = {za_row0, za_row1, za_row2, za_row3, za_row4}   'za[5, 2]

    Dim zb_row0 = {0, 0, 0, 0, 0}
    Dim zb_row1 = {0, 0, 0, 0, 0}
    Dim zb = {zb_row0, zb_row1}                              'zb[2, 5]

    Dim zab_row0 = {0, 0, 0}
    Dim zab_row1 = {0, 0, 0}
    Dim zab_row2 = {0, 0, 0}
    Dim zab = {zab_row0, zab_row1, zab_row2}                  'zab[3, 3]

    Dim zx_row0 = {0, 0, 0, 0}
    Dim zx_row1 = {0, 0, 0, 0}
    Dim zx_row2 = {0, 0, 0, 0}
    Dim zx_row3 = {0, 0, 0, 0}
    Dim zx = {zx_row0, zx_row1, zx_row2, zx_row3}             'zx[4, 4]

    Dim zy_row0 = {0, 0, 0, 0}
    Dim zy_row1 = {0, 0, 0, 0}
    Dim zy_row2 = {0, 0, 0, 0}
    Dim zy_row3 = {0, 0, 0, 0}
    Dim zy = {zy_row0, zy_row1, zy_row2, zy_row3}             'zy[4, 4]  

    Dim zxy_row0 = {0, 0, 0, 0}
    Dim zxy_row1 = {0, 0, 0, 0}
    Dim zxy_row2 = {0, 0, 0, 0}
    Dim zxy_row3 = {0, 0, 0, 0}
    Dim zxy = {zxy_row0, zxy_row1, zxy_row2, zxy_row3}         'zxy[4, 4] 

    Dim x3, x4, a3, y3, y4, b3, z33, z43, z34, z44, x2, a2, z23, z24, x5, a4, z53, z54 As Double
    x3 = x4 = a3 = y3 = y4 = b3 = z33 = z43 = z34 = z44 = x2 = a2 = z23 = z24 = x5 = a4 = z53 = z54 = 0.0

    Dim a1, a5, y2, b2, z32, z42, y5, b4, z35, z45, b1, b5, w2, w3, sw, wx2, wx3, wy2, wy3, w1, w4, w5 As Double
    a1 = a5 = y2 = b2 = z32 = z42 = y5 = b4 = z35 = z45 = b1 = b5 = w2 = w3 = sw = wx2 = wx3 = wy2 = wy3 = w1 = w4 = w5 = 0.0

    Dim zx3b3, zx4b3, zy3a3, zy4a3, a, b, c, d, e, a3sq, b3sq, p02, p03, p12, p13, p20, p21, p22 As Double
    zx3b3 = zx4b3 = zy3a3 = zy4a3 = a = b = c = d = e = a3sq = b3sq = p02 = p03 = p12 = p13 = p20 = p21 = p22 = 0.0

    Dim p23, p30, p31, p32, p33, dy, q0, q1, q2, q3, dx As Double
    p23 = p30 = p31 = p32 = p33 = dy = q0 = q1 = q2 = q3 = dx = 0.0

    '------------
    'Calculations begin

    lx = Math.Floor(lx)
    ly = Math.Floor(ly)

    lxm1 = Math.Floor(lx - 1)
    lxp1 = Math.Floor(lx + 1)
    lym1 = Math.Floor(ly - 1)
    lyp1 = Math.Floor(ly + 1)
    ixpv = -1
    iypv = -1

    For k = 0 To n Step -1

        If u{k} >= x{lxm1} Then
            ix = lx
        ElseIf u{k} < x{0} Then
            ix = 0
        Else
            imn = 1
            imx = lxm1
            Do
                ix = Math.Floor((imn + imx) / 2)
                If u{k} >= x{ix} Then
                    imn = ix + 1
                Else
                    imx = ix
                End If
            Loop While (imx > imn)
            ix = imx
        End If
        ix = Math.Floor(ix)

    Next k

End Sub

我得到这个错误的确切位置是;

 If u{k} >= x{lxm1} Then
                ix = lx
            ElseIf u{k} < x{0} Then
                ix = 0

就在你{k}里,你可以看到here 我已经很久没有在 VB 工作了...所以...感谢您发送给我的帮助,对不起我的英语。

【问题讨论】:

  • 另外,要访问 VB 中的数组,请使用 array(index)
  • Dim za(5,2) As Integer

标签: java .net vb.net compiler-errors


【解决方案1】:

您不能在 double 数据类型附近添加花括号。花括号用于初始化数组。

如果要比较一个数组:

Dim IntArray As Integer = {2, 0} 'This array has 2 value, 2 and 0.
'Compare it
If IntArray(1) >= 7 Then 'You can only compare with one value in an array
    Console.WriteLine("It is more than 7!")
End If

注意数组是从零开始的索引,这意味着如果你想分配或读取数组的第一个对象,你应该这样做:IntArray(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2023-03-06
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多