2016-10-19 9 views
0

두 개의 숫자를 서로 나눌뿐 아니라 사용자가 0으로 나누기를 입력하거나 글자와 다른 정수를 입력하지 못하게하려고합니다. 내가 함께 0으로 나누기를 얻기 위해 노력하고 있어요 지금 현재 :VB Windows Form에서 제로 및 비 정수 제출을 나누려고 시도하면 어떻게해야합니까?

Public Class Form2 
Dim answer As Double 
Private Sub btnDiv_Click(sender As Object, e As EventArgs) Handles btnDiv.Click 
    Dim num1 As Double 
    Dim num2 As Double 
    txtOne.Text = num1 
    txtTwo.Text = num2 
    If num2 = "0" Then 
     MessageBox.Show("Cannot Divide by Zero. Enter Another Integer.") 
    Else 
     lblDiv.Text = num1/num2 
    End If 


End Sub 
End Class 

사람은 내가이 일을 돌아 다니면서하는 방법을 모르거나 내가 적어도 바른 길에 나는 경우

+0

당신은 그것을 바꿨습니다. 대신에'num1 = txtOne.Text'를 쓰십시오. txtTwo.Text에서도 수행하십시오 – someone

+0

'String'과 'Double'을 비교하십시오. 'num2 = "0"'을주의하십시오. 'num2'는'Double',''0''은'String'입니다. –

답변

0

에 대한 Try Catch Exception를 사용해보십시오 이 else if 문 대신에.

+0

그들이 항상 말했듯이 _ 예방은 치료보다 낫습니다. 그래서 예외가 발생하는 것을 방지하는 것이 예외를 던져 버리는 것보다 항상 낫습니다. –

+1

@CrushSundae meh. 이 코드의 성능에 상당한 영향을 줄 수있을만큼 빨리 버튼을 누를 수 없습니다. 이 경우 표현력이 뛰어나고 정확한 느낌으로 이동하십시오. –

+0

@CrushSundae 제게있어 가장 좋은 방법은 여러 조건이있는 경우에 나누어 써진 예외를 잡아 내고 싶다면 if-else 문을 개선하는 것입니다. – GNMercado

1
Public Class Form2 

    Dim answer As Double 

    Private Sub btnDiv_Click(sender As Object, e As EventArgs) Handles btnDiv.Click 
     Dim num1 As Double = Double.Parse(txtOne.Text) 
     Dim num2 As Double = Double.Parse(txtTwo.Text) 

     Try  
      answer = num1/num2 
      lblDiv = answer.ToString() 
     Catch Ex As DivideByZeroException 
      MessageBox.Show("Cannot divide by zero. Enter another number.") 
     End Try 
    End Sub 

End Class 

또는

Public Class Form2 

    Dim answer As Double 

    Private Sub btnDiv_Click(sender As Object, e As EventArgs) Handles btnDiv.Click 
     Dim num1 As Double = Double.Parse(txtOne.Text) 
     Dim num2 As Double = Double.Parse(txtTwo.Text) 

     If num2 = 0 Then 
      MessageBox.Show("Cannot divide by zero. Enter another number.") 
     Else 
      answer = num1/num2 
      lblDiv = answer.ToString()    
     End If 
    End Sub 

End Class 

나는 원래 코드에서 본 한 가지 중요한 것은 : 유형의 사용과 일치 ! 당신은 더블num1num2을 만들 수 있지만, 문자열에서 직접 그들에게 할당하고 오류 메시지가 모든 정수를 호출하는 동안 문자열"0"num2을 비교하려고 시도합니다.0으로 구문 분석 할 문자열을 만드는 방법은 여러 가지가 있습니다!

사용자가 키보드에서 문자열을 제공합니다. 거기에서 가능한 정확한 유형으로 가능한 빨리 가져 와서 사용자에게 문자열을 다시 표시해야 할 때까지 가능한 한 오래 있어야합니다.

+0

'Double' 값의 분할로 인해 DivideByZeroException이 발생합니까? 내 제한된 VB.Net 테스트 결과는'Infinity' 또는'-Infinity'가 될 것입니다. 타입이'Integer' 또는'Decimal'이라면'DivideByZeroException'이 발생합니다. –