【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
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」は数値変換可能だったため「入力されたのは数値です」と出力されます。
入力値「文字です」は数値変換ができなかったため「入力されたのは文字です」と出力されました。
入力:-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
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」は数値変換できない(文字)のため、↑の判定をせず終了となりました。
入力:-10
入力:ー1
入力値「7」「-10」は数値変換可能(数字)のため、負数・0・正数判定するIf文を実行してその結果をコンソールに出力してくれました。
入力値「ー1」は数値変換できない(文字)のため、↑の判定をせず終了となりました。
これでひとまず、文字を入力されてもエラーが起きないプログラムが完成しました!!