前回 「数値入力を促した際に、数字以外(文字列)が入力されてしまうとエラーが発生してしまう。」というところを紹介しました。
このエラーを解消するための書き方を紹介したいと思います。
Console.WriteLine("数字を入力してEnterキーを押してください")
Dim s As String
s = Console.ReadLine()
If IsNumeric(s) = True Then
Console.WriteLine("入力されたのは数値です:" & s)
Else
Console.WriteLine("入力されたのは文字です:" & s)
End If
(※)何が入力されてもよいようにString型の変数で入力値を受け取ります。
この記事のミソは、「入力値が数値かどうかを判定したい。」というところで、ここで登場するのが
IsNumeric("文字列")
です。
IsNumeric()は引数(カッコ内に指定した文字列)が数値変換可能かどうか(可能ならばTrue、不可ならばFalse)を教えてくれる関数です!今回のケースにもってこいの関数なんです。
では、これで数字と文字か判定することができるのか、実行して確認してみましょう。
入力:
5
入力:
-1
入力:
文字です
入力値「5」「-1」は数値変換可能だったため「
入力されたのは数値です」と出力されます。
入力値「文字です」は数値変換ができなかったため「
入力されたのは文字です」と出力されました。
ということで、前回のコードを、数値変換可能だったら実行してほしいので、
さっそくこのIf文の中に前回のコードを書き込みましょう。
If IsNumeric(s) = True Then
Console.WriteLine("入力されたのは数値です:" & s)
Dim i As Integer
i = s
If i = 0 Then
Console.WriteLine("入力値は0です。")
ElseIf i > 0 Then
Console.WriteLine("入力値は正数です。")
Else
Console.WriteLine("入力値は負数です。")
End If
Else
Console.WriteLine("入力されたのは文字です:" & s)
End If
それでは、実行して確認しましょう。
入力:
7
入力:
-10
入力:
ー1
入力値「7」「-10」は数値変換可能(数字)のため、
負数・0・正数判定するIf文を実行してその結果をコンソールに出力してくれました。
入力値「ー1」は数値変換できない(文字)のため、
↑の判定をせず終了となりました。
これでひとまず、文字を入力されてもエラーが起きないプログラムが完成しました!!