【Java】Scannerクラスを使って文字列(String)を分割し、プリミティブ型のデータへ変換する!

Scannerクラスを使うことで文字列をプリミティブ型のデータへ変換することができます。

プリミティブ型とは、プログラミング言語などが仕様として提供する基本的なデータ型であり、byte型、short型、int型、long型、float型、double型、boolean型、char型があります。

今回はScannerクラスを使って、以下の場合で文字列をプリミティブ型のデータへ変換していきます。

⚫︎ 文字で文字列を分割してプリミティブ型のデータへ変換する場合
⚫︎ 正規表現で文字列を分割してプリミティブ型のデータへ変換する場合

Scannerクラスとは

Scannerクラスとは標準入力を取得するためのクラスとなります。

Scannerクラスの書き方

Scannerクラスの構文は下記となります。

Scannerクラスを使用できるようにパッケージをインポートします。
そうすることでScannerクラスのメソッドを使用できるようになります。

Scannerクラスについて詳しく知りたい場合はこちらをご参考ください

文字列を分割するメソッド

Scannerクラスで文字列を分割するにはuseDelimiter()メソッドを使用します。
useDelimiter()メソッドの書き方は下記となります。

useDelimiter()の()に文字を指定することで指定した文字で文字列を区切ることができます。

文字列を分割し、プリミティブ型へ変換するサンプルコード

文字列を分割し、プリミティブ型のデータ変換するサンプルコードを紹介します。
今回は文字と正規表現で文字列を分割し、プリミティブ型のデータへ変換してみます。

文字で文字列を分割する場合

文字で文字列を分割し、プリミティブ型のデータへ変換します。

出力結果

90

文字で文字列を分割し、int型のデータへ変換しました。

正規表現で文字列を分割する場合

正規表現で文字列を分割し、プリミティブ型のデータへ変換します。

出力結果

合計点:252点
平均点:63点

正規表現で文字列を分割し、int型のデータへ変換しました。

今回のポイント

Scannerで文字列をプリミティブ型のデータへ変換

文字列を分割してプリミティブ型のデータへ変換するには 「Scanner」クラスを使用する

⚫︎ 文字を指定して文字列を区切ることで数字を取得しているパターンと、文字列を「数字以外の文字列」で区切ることで文字列中の数字のみを取得している
(数字以外の文字列は正規表現の「[^0-9]+」という形で指定しており、デフォルトでは空白が区切り文字として使用している)

⚫︎ ScannerクラスのnextIntメソッドで数値のInt型として取得する
(他にも文字列として取得したい場合はnextLineメソッド、「BigInteger」インスタンスで取得したい場合はnextBigIntegerメソッドなどが用意されている)

⚫︎ hasNextIntメソッドnextIntメソッドで次の要素があるかないかを調べることができる

⚫︎ 区切り文字を適切に設定しないと、正しく値を取得できない。
(区切り文字を空白にした場合、要素は「太郎:「国語72点」「算数48点」となるため、nextIntメソッドでは1度も値を取得できない(nextメソッドなら取得可能)

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し