单元转换应用程序所需的数组帮助

时间:2010-06-07 11:59:22

标签: vb.net

我有一个在Visual Basic中要做的项目。 我的问题是结果总是错误的(例如,而不是2011年给出的2000)。并且我无法将英寸(1)或英尺(3)设置为所需单位,它会产生无穷大错误。如果我把原始和期望单位放在英寸(1),结果是“不是数字”。

这是我到目前为止所做的代码。该项目是关于数组。任何帮助表示赞赏。

  

Public Class Form1

Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click

    Dim original(9) As Long
    Dim desired(9) As Long
    Dim a As Integer
    Dim o As Integer
    Dim d As Integer
    Dim inch As Long, fathom As Long, furlong As Long, kilometer As Long
    Dim meter As Long, miles As Long, rod As Long, yard As Long, feet As Long

    a = Val(Input3.Text)
    o = Val(Input1.Text)
    d = Val(Input2.Text)

    inch& = 0.0833
    rod& = 16.5
    yard& = 3
    furlong& = 660
    meter& = 3.28155
    kilometer& = 3281.5
    fathom& = 6
    miles& = 5280

    original(1) = inch
    original(2) = fathom
    original(3) = feet
    original(4) = furlong
    original(5) = kilometer
    original(6) = meter
    original(7) = miles
    original(8) = rod
    original(9) = yard

    desired(1) = inch
    desired(2) = fathom
    desired(3) = feet
    desired(4) = furlong
    desired(5) = kilometer
    desired(6) = meter
    desired(7) = miles
    desired(8) = rod
    desired(9) = yard

    If o < 1 Or o > 9 Or d < 1 Or d > 9 Then
        MessageBox.Show("Units must range from 1-9.", "Error", _
        MessageBoxButtons.OK, _
        MessageBoxIcon.Information)
        Return
    End If

    Output.Text = (a * original(o)) / desired(d)

End Sub
     

结束班

2 个答案:

答案 0 :(得分:1)

Geia sou Manoli,

通常数组基于零。 还应将英寸,米等声明为双倍,不长。

此代码将进行核心转换

    Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
    Dim original(8) As Double
    Dim desired(8) As Double
    Dim a As Integer
    Dim o As Integer
    Dim d As Integer
    Dim inch As Double, fathom As Long, furlong As Double, kilometer As Double
    Dim meter As Double, miles As Long, rod As Double, yard As Double, feet As Long

    a = CInt(Val(Input3.Text))
    o = CInt(Val(Input1.Text))
    d = CInt(Val(Input2.Text))

    inch = 0.0833333333
    rod = 16.5
    yard = 3
    furlong = 660
    meter = 3.2808399
    kilometer = 3280.8399
    fathom = 6
    miles = 5280

    original(0) = inch
    original(1) = fathom
    original(2) = feet
    original(3) = furlong
    original(4) = kilometer
    original(5) = meter
    original(6) = miles
    original(7) = rod
    original(8) = yard

    desired(0) = inch
    desired(1) = fathom
    desired(2) = feet
    desired(3) = furlong
    desired(4) = kilometer
    desired(5) = meter
    desired(6) = miles
    desired(7) = rod
    desired(8) = yard

    If o < 0 Or o > 8 Or d < 0 Or d > 8 Then
        MessageBox.Show("Units must range from 0-8.", "Error", _
        MessageBoxButtons.OK, _
        MessageBoxIcon.Information)
        Return
    End If

    Output.Text = CStr((a * original(o)) / desired(d))

End Sub

答案 1 :(得分:0)

感谢您的回复!

现在它完美无缺。

我正要问另一个问题,但我想出来了。

  

Output.Text = CStr((a * original(o))/ desired(d))

必须转换为

  

Output.Text = CStr((a * original(o - 1))/ desired(d - 1))

Euxaristw!

相关问题