2014-09-23 78 views
1

我正在编写一个程序来计算当您在一个输入框中输入mp​​h并在另一个输入框中行进的小时数时所行进的距离。当我运行程序时,它只是告诉我你输入的小时数重复的距离。我需要它按顺序显示每小时多少英里。例如,如果用户输入60英里每小时3小时,我希望它显示,看起来像一个列表:得到一个循环结果在vb.net的序列列表中

1小时60英里 2小时120英里 3小时180英里

这里是我的代码到目前为止写着:

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click 

Dim intSpeed As Integer 

    Dim intHours As Integer 

    Dim intDistance As Integer = 0 


    Dim strSpeed As String 

    Dim strHours As String 

    Dim intCount As Integer = 0 

    lstDistance.Items.Clear() 
    lstDistance.Items.Add("Hours:  Distance:   ") 

    strSpeed = InputBox("Enter speed in miles-per-hour", "Speed") 

    'convert to integer 

    If Integer.TryParse(strSpeed, intSpeed) Then 
     Do Until intCount = 1 
      strHours = InputBox("Input hours Traveled", "Hours") 
      If Integer.TryParse(strHours, intHours) Then 
       intCount += 1 
      End If 
     Loop 
     For intCount = 1 To intHours 
      intDistance = intSpeed * intHours 
      lstDistance.Items.Add(intHours.ToString & "     " & intDistance.ToString & " Miles") 
     Next 
    End If 

End Sub 

我知道有一个更简单的方法来做到这一点,但我是从专门学习这本书会要求您使用循环解决问题。

回答

0

我假设你的lstDistance是一个列表框。
你只需要改变inthoures到intcount

For intCount = 1 To intHours 
intDistance = intSpeed * intHours 
lstDistance.Items.Add(intHours.ToString & "     " & intDistance.ToString & " Miles") 
Next 

For intCount = 1 To intHours 
      intDistance = intSpeed * intCount 
      lstDistance.Items.Add(intCount.ToString & "     " & intDistance.ToString & " Miles") 
     Next 

,因为你要显示你需要使用intcount每小时的结果。
然后你会得到你想要的结果。
1 * 60 = 60
2 * 60 = 120
3 * 60 = 180

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim intSpeed As Integer 

    Dim intHours As Integer 

    Dim intDistance As Integer = 0 


    Dim strSpeed As String 

    Dim strHours As String 

    Dim intCount As Integer = 0 

    lstDistance.Items.Clear() 
    lstDistance.Items.Add("Hours:  Distance:   ") 

    strSpeed = InputBox("Enter speed in miles-per-hour", "Speed") 

    'convert to integer 

    If Integer.TryParse(strSpeed, intSpeed) Then 
     Do Until intCount = 1 
      strHours = InputBox("Input hours Traveled", "Hours") 
      If Integer.TryParse(strHours, intHours) Then 
       intCount += 1 
      End If 
     Loop 
     For intCount = 1 To intHours 
      intDistance = intSpeed * intCount 
      lstDistance.Items.Add(intCount.ToString & "     " & intDistance.ToString & " Miles") 
     Next 
    End If 
End Sub 
+0

这实际上是我在与它混合后想出来的。唯一的问题是,当我以60英里/小时的速度行驶时,5小时内它会以1小时300英里的速度返回,等等,而不是1小时60英里等等 – 2014-09-23 18:56:24

+0

不,你错了,我错过了你所做的一点小改变。谢谢您的帮助 – 2014-09-23 18:58:56

0

看看你的For循环。

For intCount = 1 To intHours 
    intDistance = intSpeed * intHours 
    lstDistance.Items.Add(intHours.ToString & "     " & intDistance.ToString & " Miles") 
Next 

什么是改变的价值? intCount,对吧?你是否在输出中使用了intCount

+0

我认为intCount正在用于显示的输入框的数目不是小时这是作为数进入该输入框 – 2014-09-23 02:09:24

+0

这是一个完美的例子,当有人试图在不知道代码实际应该做什么的情况下编写代码时会发生什么。一旦编写代码,就没有办法检查它是否做到了它应该做的事情,因为它应该做的事情不会写在任何地方。 InputBoxes的数量? InputBoxes的数量是两个,简单明了。一个是速度,一个是时间。然后,您可以从1到那个时间进行计数,并且对于每个增量,输出到那时为止的距离。 – jmcilhinney 2014-09-23 02:59:06

+1

这是一个公平的评论。我读了这本书中的这一章,但我并不完全理解它。到目前为止,我从中得到的最多的方式是从示例中获取代码,然后用它欺骗它,直到它做到我需要它做的 – 2014-09-23 18:49:56