Visual Basic中的华氏温度转换器

时间:2014-09-13 14:33:50

标签: vb.net visual-studio-2012 converter

我试图在vb中编写程序,要求用户在华氏文本框或摄氏文本框中键入值。我只想使用 ONE 按钮执行计算,使用两个文本框来显示输出,但我不确定我是否理解发生了什么。我输入文本框的数字不是计算出来的数字。

以下是代码:

Private Sub convertButton_Click(sender As Object, e As EventArgs) Handles convertButton.Click

    Dim FahrenheitValue, CelsiusValue As Double

    FahrenheitValue = Val(fahrenheitBox.Text)
    CelsiusValue = Val(celsiusBox.Text)

        FahrenheitValue = (9 / 5) * (CelsiusValue + 32)
        CelsiusValue = (5 / 9) * (FahrenheitValue - 32)

        celsiusBox.Text = CelsiusValue
        fahrenheitBox.Text = FahrenheitValue


End Sub

我尽力不为计算创建不同的按钮。如何让Box接受并计算在框中输入的正确值?

2 个答案:

答案 0 :(得分:4)

这里有一个主要问题:

FahrenheitValue = (9 / 5) * (CelsiusValue + 32)
CelsiusValue = (5 / 9) * (FahrenheitValue - 32)

除了数学有点偏离之外你还要在重新使用之前改变它。

即。我以摄氏度输入0:

  • FV =(9/5)* 0 + 32

FV现在等于32

  • CV =(5/9)* 32 - 32 == -14.22

试试这个:

      Dim ResultFV As Double = (CelsiusValue * (5 / 9) + 32)
      Dim ResultCV As Double = (FahrenheitValue - 32) * (9 / 5)

此外,在您拍摄后清除文本框值是明智的。

修改

其他评论也是正确的,另外一个问题是您没有设置需要进行哪些计算。

尝试:

Public Class Form1
     Dim celsiusActive As Boolean


     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim FahrenheitValue As Double = 0
          Dim CelsiusValue As Double = 0

          FahrenheitValue = Val(fahrenheitBox.Text)
          CelsiusValue = Val(celsiusBox.Text)

          Dim ResultFV As Double = (CelsiusValue * (5 / 9) + 32)
          Dim ResultCV As Double = (FahrenheitValue - 32) * (9 / 5)


          If celsiusActive Then
               fahrenheitBox.Text = ResultFV
          Else
               celsiusBox.Text = ResultCV
          End If

     End Sub

     Private Sub celsiusBox_TextChanged(sender As Object, e As EventArgs) Handles celsiusBox.TextChanged
          celsiusActive = True
     End Sub

     Private Sub fahrenheitBox_TextChanged(sender As Object, e As EventArgs) Handles fahrenheitBox.TextChanged
          celsiusActive = False
     End Sub
End Class

答案 1 :(得分:1)

如果我理解正确的话,如果用户在华氏温度文本框中输入值,则摄氏值将无效。这样,您的FahrenheitValue将始终计算为(9/5)*(0 + 32)。如果是相反的方式,它应该工作。 我认为您需要检查用户输入值的位置,并根据具体情况执行相应的计算。

代码就像这样:

if fahrenheitBox.Text IS Nothing then
CelsiusValue = Val(celsiusBox.Text)
FahrenheitValue = (9 / 5) * (CelsiusValue + 32)

else
die