【VB.Net】コンソール出力⑤(数値変換可能判定) | i

【VB.Net】コンソール出力⑤(数値変換可能判定)

前回 「数値入力を促した際に、数字以外(文字列)が入力されてしまうとエラーが発生してしまう。」というところを紹介しました。
このエラーを解消するための書き方を紹介したいと思います。
 

Sub Main

Console.WriteLine("数字を入力してEnterキーを押してください")

Dim s As String
s = Console.ReadLine()


If IsNumeric(s) = True Then
 Console.WriteLine("入力されたのは数値です:" & s)

Else
 Console.WriteLine("入力されたのは文字です:" & s)


End If



 

解説:

ℓ5~ℓ8 入力を促して入力値を変数sに代入する。(※)
ℓ10 もし「変数sが数値変換できる(変数sが数字)」ならばℓ11をコンソール出力する。
ℓ13 それ以外(変数sが数値変換できない)ならばℓ14をコンソール出力する。

(※)何が入力されてもよいようにString型の変数で入力値を受け取ります。

この記事のミソは、「入力値が数値かどうかを判定したい。」というところで、ここで登場するのが

IsNumeric("文字列")
 

です。

IsNumeric()は引数(カッコ内に指定した文字列)が数値変換可能かどうか(可能ならばTrue、不可ならばFalse)を教えてくれる関数です!今回のケースにもってこいの関数なんです。


では、これで数字と文字か判定することができるのか、実行して確認してみましょう。
 

実行結果

入力:5


入力:-1


入力:文字です


入力値「5」「-1」は数値変換可能だったため「入力されたのは数値です」と出力されます。
入力値「文字です」は数値変換ができなかったため「入力されたのは文字です」と出力されました。


ということで、前回のコードを、数値変換可能だったら実行してほしいので、
さっそくこのIf文の中に前回のコードを書き込みましょう。
 

Sub Main

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


 

解説:

ℓ10 もし「変数sが数値変換できる(変数sが数字)」ならばℓ11からℓ23までの処理をする。
ℓ12~ℓ24 前回の記事で紹介した内容。
ℓ13 変数iに変数sを代入する。(入力された数値を変数iにコピーする。)
ℓ26 それ以外(変数sが数値変換できない)ならばℓ27をコンソール出力する。


それでは、実行して確認しましょう。

実行結果

入力:7


入力:-10


入力:ー1



入力値「7」「-10」は数値変換可能(数字)のため、負数・0・正数判定するIf文を実行してその結果をコンソールに出力してくれました。
入力値「ー1」は数値変換できない(文字)のため、↑の判定をせず終了となりました。


これでひとまず、文字を入力されてもエラーが起きないプログラムが完成しました!!