数値変換 TryParse [VB]

Visual Basic 文法[2015 2013 2012]

TryParseで数値に変換

キーボードからの入力したデータはすべて文字として扱われるので、プログラム内で数値として扱うためには、Integer.TryParseメソッドや Double.TryParseメソッドで、数値に変換する必要があります。

たとえば、Integer.TryParse を使えば、Integer型の整数チェックと、整数変換を同時にしてくれるので、入力した値が整数か否かを、IsNumeric関数等で調べる手間が省けます。

整数に変換 Integer.TryParse

Integer.TryParseメソッドは、Integer.TryParse(inStr, InNum)ように、引数をふたつ指定します。一番目のinStrは String型で、整数に変換したい文字列(キーボードからの入力値など)、二番目の引数inNumは Integer型とし、instrの文字列が正しく整数に変換できたとき、その変換結果の整数が入ります。

正しく整数に変換できたかどうかは、Integer.TryParseメソッドの返り値で判ります。正しく変換できたときはTrueを、そうでなければ Falseを返します。

それでは、キーボードから入力したデータが、整数でなければ、Do Loop を使って再入力できるようにするプログラムを作成します。

ソースリストの枠内をクリックすると全選択できます。

Module Module1

  Sub Main()
      ' 変数の宣言
      Dim inStr As String
      Dim inNum As Integer
      ' 整数以外の入力のときは再入力
      Do
          Console.WriteLine("** 整数を入力してください **")
          ' キーボードから入力
          inStr = Console.ReadLine()
          ' Integer.TryParseメソッドで整数検査と変換
          If Integer.TryParse(inStr, inNum) = True Then
              ' 正しく整数に変換された時
              Console.Write("入力した整数=")
              Console.WriteLine(inNum)
              ' 正しく整数が入力されたので、Do Loopを抜ける
              Exit Do
          Else
              ' 整数に変換できなかった時
              Console.WriteLine("入力値に誤りがあります")
              Console.WriteLine()
          End If
      Loop
  End Sub

End Module

プログラムが完成したら、[Ctrl]キーを押したまま、[F5]キーを押して、プログラムを実行して確認してください。

実数に変換 Double.TryParse

Double.TryParse を使えば、整数変換と同様に、入力した文字列を実数に変換できます。

上のサンプルプログラムを実数用に修正します。

Module Module1

  Sub Main()
      ' 変数の宣言
      Dim inStr As String
      Dim inNum As Double
      ' 整数以外の入力のときは再入力
      Do
          Console.WriteLine("** 実数を入力してください **")
          ' キーボードから入力
          inStr = Console.ReadLine()
          ' Double.TryParseメソッドで数値検査と変換
          If Double.TryParse(inStr, inNum) = True Then
              ' 正しく実数に変換された時
              Console.Write("入力した実数=")
              Console.WriteLine(inNum)
              ' 正しく実数が入力されたので、Do Loopを抜ける
              Exit Do
          Else
              ' 実数に変換できなかった時
              Console.WriteLine("入力値に誤りがあります")
              Console.WriteLine()
          End If
      Loop
  End Sub

End Module
[広告]