2014-09-13 5 views
-2

사용자가 화씨 텍스트 상자 또는 섭씨 텍스트 상자에 값을 입력해야하는 VB에서 프로그램을 작성하려고합니다. ONE 버튼을 사용하여 계산을 수행하고 출력을 표시하는 두 개의 텍스트 상자를 사용하려고하지만 무슨 일이 일어나는지 잘 모르겠습니다. 텍스트 상자에 입력 한 숫자는 계산 된 것이 아닙니다.Visual Basic에서 섭씨 계산기로 변환

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 

내가 계산을위한 다른 버튼을 생성하지 최선을 시도하고있다 :

여기에 코드입니다. 박스가 상자에 입력 된 올바른 값을 받아들이고 계산하도록하려면 어떻게해야합니까?

+0

이 질문의 제목을 입력. 그 중 하나를 시도해 봤어? – lxg

+0

그래, 모두 계산을 수행하기 위해 양식에 둘 이상의 단추를 사용하는 것이 포함됩니다. –

+0

2 개의 단추, 콤보 또는 라디오 단추 중 사용자 의도를 신중히하기 위해 * 무언가 *가 필요합니다. – Plutonix

답변

4

하나의 주요 문제는 여기에 있습니다 : 당신이 바로 다시 사용하기 전에 값을 변경하고 떨어져 조금되는 수학에서 제외

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

.

I.E. 나는 섭씨 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

는 섭씨 값이 아무것도 없을 것이다. 그렇게하면 화씨 값은 항상 (9/5) * (0 + 32)로 계산됩니다. 다른 방향이라면 제대로 작동 할 것입니다. 사용자가 값을 입력 한 지점이 필요하다고 생각하고 이에 따라 해당 계산을 수행합니다.

코드는 다음과 같은 STH 것 : 구글이 가능한 제안을 많이 반환에

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

else 
die