2017-03-20 10 views
-1

私はVBでこのコードを持っています。私は文法上のエラーはありませんが、実行している数字をテストすると、「数字は有効ではありません」または間違った答えになります。このコードで間違っていることを教えてください。ありがとうございました。if、elseif、searching、comparison、greater、smaller

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    TextBox2.Text = "" 
    Dim Num As Integer 
    Dim str As String 
    str = TextBox1.Text 
    Num = Integer.Parse(str) 


    If Num >= 100 And Num <= 199 Then 

     TextBox2.Text = "Basement" 

    ElseIf Num >= 200 And Num <= 500 And Num >= 900 Then 

     TextBox2.Text = "Main Floor" 

    ElseIf Num <= 700 And Num >= 501 And Num >= 750 And Num <= 900 Then 

     TextBox2.Text = "Upper Floor" 

    ElseIf Num <= 750 And Num >= 700 Then 

     TextBox2.Text = "Archives" 
    Else 
     TextBox2.Text = "Number is not valid" 
    End If 

End Sub 
+7

VSにはこの種の問題を解決するのに最適なデバッガが付属しています。 – Plutonix

+4

テキストボックスに有効な番号があると仮定しないでください。 [Integer.TryParse](https://msdn.microsoft.com/en-us/library/f02979c7(v = vs.110).aspx)を代わりに使用してください。 – LarsTech

+3

** [ラバーダックのデバッグ](https://en.wikipedia.org/wiki/Rubber_duck_debugging)** – Plutonix

答えて

6

これは、ここで

ElseIf Num >= 200 And Num <= 500 And Num >= 900 Then 

あなたは数が大きい、等しいことが求めていることは不可能であるよりも200(OK)、(500よりも低等しい(OK)AND 900より大きく、等しくありませんあなたがすでに500よりも低い数を求めているので、大丈夫です)。数値は500より小さく、900より大きくすることはできません。

要件がなくても、if文がどのように見えるかは分かりません。私はあなたのコードを手作業で "紙で"実行するか、それらのすべてを書くのではなく、一度に1つのif文で開始することをお勧めします。

+5

また、ElseIf Num <= 700、Num> = 501、Num> = 750、Num <= 900 Then – Plutonix

2

混乱する可能性があるので、私は1行で多くのチェックに混ぜ合わせません。

はこのように気にいらを行います

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    TextBox2.Text = "" 
    Dim Num As Integer 
    Dim str As String 
    str = TextBox1.Text 
    Num = Integer.Parse(str) 

    If Num >= 100 And Num <= 199 Then 
     TextBox2.Text = "Basement" 
    ElseIf Num >= 200 And Num <= 500 Then 
     TextBox2.Text = "Main Floor" 
    ElseIf Num >= 501 And Num <= 700 then 
     TextBox2.Text = "Upper Floor" 
    ElseIf Num ..... and so on 
    Else 
     TextBox2.Text = "Number is not valid" 
    End If 

End Sub 

また、それはあなたのTextBoxコントロールと他のコントロールに名前を付けることをお勧めです:のようなものかもしれない

  • textbox1txtfloornumber
  • textbox2のようなものかもしれませんtxtfloorname

これにより、後であなたのコードに簡単に戻ってくることができます。

関連する問題