判斷輸入的資料是否為數字

這個問題要怎麼處理,看想法怎麼想,會有不一樣的寫法出現
以下舉兩種寫法

如果你知道ASCII這東西,可以去查表,看數字的範圍是在哪邊多少
0是48
9是57

程式碼可能長成這樣
ASCII的判斷寫法參考藍色小舖的討論

Public Class Form1

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim i As Integer
        If Len(TextBox1.Text) >= 15 Then      '判斷輸入字數長度
            MsgBox("您的錢不是賺這麼多吧!")

        Else
            For i = 1 To Len(TextBox1.Text)   '判斷是否不是數字
                If Strings.Asc(Mid(TextBox1.Text, i, 1)) < 48 Or Strings.Asc(Mid(TextBox1.Text, i, 1)) > 57 Then
                    MsgBox("請輸入數字!")
                    Exit For                  '非數字則中止跳出
                End If
            Next
        End If
    End Sub


所以在這範圍以外就不是數字
但問題來了,如果是有包含小數點怎麼辦?
查表可以看到 . 是46,/是47
所以如果判斷句是46~57,裡面會多一個 / 也會允許輸入
因此...可以不用這麼辛苦用ASCII寫判斷句...

如果允許輸入小數點,那個資料型態可以指定變數為Double
接著,VB.NET裡面有個東西叫做Try
TextBox.Text裡面為字串,因此字串如果可以順利地轉換成Double
那麼他只會允許Double的範圍,因此就可以達到我們所要求的防呆機制
程式碼可能長得像這樣...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Dim Height As Double = TextBox1.Text
        'Dim Weight As Double = TextBox2.Text
        Dim Height As Double
        Dim Weight As Double

        If Not Double.TryParse(TextBox1.Text, Height) Then
            MessageBox.Show("請輸入正確的身高!", "提醒您")
        Else
        End If

        If Not Double.TryParse(TextBox2.Text, Weight) Then
            MessageBox.Show("請輸入正確的體重!", "提醒您")
            Return
        Else
        End If

可能有同學會不知道為什麼要用Not
很好這是個好問題,很多書籍都一個表格直接帶過and、or.....Not這些東西
沒有很詳細的舉例說明這些東西能幹啥用
介紹Not之前要先知道一件事情
Parse()函示可以轉換指定字串到他種型別資料
Double.Parse是做字串轉換到倍精確浮點數的動作
Double.TryParse的產出是試著去轉換,成功則回傳true,失敗則回傳false
如果有人輸入合法的格式,照這程式的判斷,會變成合法的會出現
請輸入正確的身高,不合法的會傻傻地出現錯誤
難不成要去修改判斷句的內容?
所以這時候Not就很好用了,Not會將true跟false反轉過來,true轉成fasle,false轉成true
因此不須在判斷句裡面寫得死去活來
那長度判斷怎麼辦...屬性裡面就可以控制長度了...

判斷輸入的資料是否為空
與上面範例一有點相似
使用Len,程式碼可能是這樣

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Message As String
        If Len(TextBox1.Text) <= 0 Then
            MessageBox.Show("請輸入資料", "小提示")
            Return
        End If
        For i As Integer = 1 To 4
            Message &= TextBox1.Text
        Next
        Label1.Text = Message
    End Sub
End Class
arrow
arrow
    全站熱搜

    喵星人 發表在 痞客邦 留言(0) 人氣()