Javaプログラミング学習サイト ゆるゆるプログラミング

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メソッド

public static int parseInt( String s, int radix )
■引数に指定された基数をもとにして、文字列の引数を符号付き整数として構文解析します。

  パラメータ s      : 文字列
        radix : 基数

  戻り値     指定された基数での、文字列引数で表される整数

try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列int型に変換できないときにcatch { ~ }の処理が実行されます。

入力した文字がint型の値に変換できない場合、メソッドnullを戻して終了します。

030:    		// int型の配列を戻す
031:    		return numbers;

作成した配列numbersをreturn文で戻しています。

035:    	// メイン
036:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

040:    		// 入力した整数を配列に格納
041:    		System.out.println( "整数を半角スペースで区切って入力してください" );

printlnメソッドで、メッセージ”整数を半角スペースで区切って入力してください"をコンソール出力しています。printlnメソッドを使っているので、コンソール入力した文字はメッセージの下側に表示されます。printメソッドを使った場合、コンソール入力した文字はメッセージの右側に表示されます。

042:    		numbers = scanNumbers();

キーボード入力した値をint型配列に戻しています。

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

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

 

Topへ