我试图在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接受并计算在框中输入的正确值?
答案 0 :(得分:4)
这里有一个主要问题:
FahrenheitValue = (9 / 5) * (CelsiusValue + 32)
CelsiusValue = (5 / 9) * (FahrenheitValue - 32)
除了数学有点偏离之外你还要在重新使用之前改变它。
即。我以摄氏度输入0:
FV现在等于32
试试这个:
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