2020/08/19 公開
・キーボード入力値を配列に格納
ここでは、キーボードで入力した整数値を配列に格納するメソッドの作り方について説明しています。
整数の値は、半角のスペースで区切って入力します。Enterキーで入力を終了します。
入力した値が数値でなかったり、半角スペースを2つ以上連続で入力した場合にはエラーとなり、メソッドはnullを戻します。
以下は、キーボードで入力した文字列(String)を配列に格納するJavaソースコードです。
ScannerSample2.java ← クリックしてダウンロードページに移動001: import java.util.Scanner; 002: 003: public class ScannerSample2 { 004: // キーボード入力した文字列を配列に格納 005: private static int[] scanNumbers( ) 006: { 007: // Scannerを作成 008: Scanner scan = new Scanner( System.in ); 009: 010: // 入力した文字列をlineに格納 011: String line = scan.nextLine(); 012: 013: // 半角スペースで区切られた文字列を配列valuesに格納 014: String[] values = line.split( " ", 0 ); 015: 016: // 配列の作成 017: int[] numbers = new int[ values.length ]; 018: 019: // valuesの値をint型に変換し、numbersに格納 020: for ( int i = 0; i < values.length; i++ ) { 021: // 文字列values[ i ]をint型に変換 022: try { 023: numbers[ i ] = Integer.parseInt( values[ i ] ); 024: } catch ( NumberFormatException ex ) { 025: // 数字に変換できなければnullを戻す 026: return null; 027: } 028: } 029: 030: // int型の配列を戻す 031: return numbers; 032: } 033: 034: 035: // メイン 036: public static void main( String[] args ) { 037: // 038: int[] numbers; 039: 040: // 入力した整数を配列に格納 041: System.out.println( "整数を半角スペースで区切って入力してください" ); 042: numbers = scanNumbers(); 043: 044: // エラーの場合、returnで終了 045: if ( null == numbers ) { 046: return; 047: } 048: 049: // 配列に格納された整数値を出力 050: for ( int i = 0; i < numbers.length; i++ ) { 051: System.out.println( numbers[ i ] ); 052: } 053: } 054: }
ここから、ソースを順番に説明していきます。
001: import java.util.Scanner;
Javaのクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。
003: public class ScannerSample2 {
クラス名を、ScannerSample2としています。
004: // キーボード入力した文字列を配列に格納 005: private static int[] scanNumbers( ) 006: {
キーボードで入力した整数を配列で戻すメソッドです。入力した値にエラーがある場合にはnullを戻します。
007: // Scannerを作成 008: Scanner scan = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
010: // 入力した文字列をlineに格納 011: String line = scan.nextLine();
ScannerクラスのnextLineメソッドで、キーボードから入力された1行を読み取り、String型のlineに代入しています。
ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
013: // 半角スペースで区切られた文字列を配列valuesに格納 014: String[] values = line.split( " ", 0 );
Stringクラスのsplitメソッドで、文字列lineを半角スペースで分割し、String型の配列valuesに格納します。
016: // 配列の作成 017: int[] numbers = new int[ values.length ];
String型の配列valuesと同じ要素数で、int型の配列numbersを初期化します。
019: // valuesの値をint型に変換し、numbersに格納 020: for ( int i = 0; i < values.length; i++ ) { 021: // 文字列values[ i ]をint型に変換 022: try { 023: numbers[ i ] = Integer.parseInt( values[ i ] ); 024: } catch ( NumberFormatException ex ) { 025: // 数字に変換できなければnullを戻す 026: return null; 027: } 028: }
String型の配列valuesの値をint型に変換し、int型の配列numbersに格納します。Stringからintへの変換は、Integer.parseIntを使います。
Integer.parseIntメソッド
■引数に指定された基数をもとにして、文字列の引数を符号付き整数として構文解析します。 パラメータ s : 文字列 radix : 基数 戻り値 指定された基数での、文字列引数で表される整数
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列がint型に変換できないときにcatch { ~ }の処理が実行されます。
入力した文字がint型の値に変換できない場合、メソッドはnullを戻して終了します。
030: // int型の配列を戻す 031: return numbers;
035: // メイン 036: public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
040: // 入力した整数を配列に格納 041: System.out.println( "整数を半角スペースで区切って入力してください" );
printlnメソッドで、メッセージ”整数を半角スペースで区切って入力してください"をコンソール出力しています。printlnメソッドを使っているので、コンソール入力した文字はメッセージの下側に表示されます。printメソッドを使った場合、コンソール入力した文字はメッセージの右側に表示されます。
042: numbers = scanNumbers();
044: // エラーの場合、returnで終了 045: if ( null == numbers ) { 046: return; 047: }
メソッドscanNumberの戻り値がnullの場合はエラーなので、return文でmainを抜けています。
049: // 配列に格納された整数値を出力 050: for ( int i = 0; i < numbers.length; i++ ) { 051: System.out.println( numbers[ i ] ); 052: }
配列numbersの値を全て、printlnメソッドでコンソール出力しています。
■キーボード入力関連コンテンツ
キーボード入力(他2件) | ScannerクラスとSystem.inを使用 |
キーボード入力値をリストに格納 | キーボード入力→リスト |
■関連コンテンツ
値のコンソール表示 | print()、println()とは? |
文字列 | 文字列について |
Integerクラス | Integerクラスについて解説 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告