2010-06-07 50 views
0

我有一个在Visual Basic中执行的项目。 我的问题是,结果总是错误的(例如,而不是2011年它给出2000)。而且我不能将Inch(1)或feet(3)设置为期望单位,它会给出Infinity错误。如果我把原始单位和期望单位放在英寸(1)中,结果是“不是数字”。单位转换应用程序需要的数组帮助

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

公共类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 

末级

回答

1

GEIA SOU马诺利,

通常数组是从零开始的。 英寸,米等应声明为双倍,不长。

该代码会做的皈依corectly

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 
+0

你也可以只使用原始数组。所需的数组不需要。 例如: Output.Text = CStr((a * original(o))/ original(d)) – 2010-06-07 12:44:59

0

谢谢你的回复!

现在它完美的工作。

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

Output.Text = CStr的((A *原(0))/期望的(d))

必须被转换到

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

Euxaristw!