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

2020/08/19 公開

・キーボード入力値をリストに格納

ここでは、キーボードで入力した整数値をリストに格納するメソッドの作り方について説明しています。

整数の値は、半角のスペースで区切って入力します。Enterキーで入力を終了します。

入力した値が数値でなかったり、半角スペースを2つ以上連続で入力した場合にはエラーとなり、メソッドnullを戻します。

以下は、キーボードで入力した文字列(String)をリストに格納するJavaソースコードです。

ScannerSample3.java ← クリックしてダウンロードページに移動
001:    import java.util.ArrayList;
002:    import java.util.Scanner;
003:    
004:    public class ScannerSample3 {
005:    	// キーボード入力した文字列をリストに格納
006:    	private static ArrayList scanNumbers( )
007:    	{
008:    		// Scannerを作成
009:    		Scanner scan = new Scanner( System.in );
010:    
011:    		// 入力した文字列をlineに格納
012:    		String line = scan.nextLine();
013:    
014:    		// 半角スペースで区切られた文字列を配列valuesに格納
015:    		String[] values = line.split( " ", 0 );
016:    
017:    		// リストの作成
018:    		ArrayList numbers = new ArrayList();
019:    
020:    		// valuesの値をint型に変換し、numbersに格納
021:    		for ( int i = 0; i < values.length; i++ ) {
022:    			// 文字列values[ i ]をint型に変換
023:    			try {
024:    				int value = Integer.parseInt( values[ i ] );
025:    				// リストにvalueを追加
026:    				numbers.add( value );
027:    			} catch ( NumberFormatException ex ) {
028:    				// 数字に変換できなければnullを戻す
029:    				return null;
030:    			}
031:    		}
032:    
033:    		// Integer型のリストを戻す
034:    		return numbers;
035:    	}
036:    
037:    
038:    	// メイン
039:    	public static void main( String[] args ) {
040:    		//
041:    		ArrayList numbers;
042:    
043:    		// 入力した整数を配列に格納
044:    		System.out.println( "整数を半角スペースで区切って入力してください" );
045:    		numbers = scanNumbers();
046:    
047:    		// エラーの場合、returnで終了
048:    		if ( null == numbers ) {
049:    			return;
050:    		}
051:    
052:    		// 配列に格納された整数値を出力
053:    		for ( int i = 0; i < numbers.size(); i++ ) {
054:    			System.out.println( numbers.get( i ) );
055:    		}
056:    	}
057:    }

ここから、ソースを順番に説明していきます。

001:    import java.util.ArrayList;
002:    import java.util.Scanner;

Javaクラスライブラリの中から「import java.util.ArrayList」と「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

004:    public class ScannerSample3 {

クラス名を、ScannerSample3としています。

005:    	// キーボード入力した文字列をリストに格納
006:    	private static ArrayList scanNumbers( )
007:    	{

キーボードで入力した整数をリストで戻すメソッドです。入力した値にエラーがある場合にはnullを戻します。

008:    		// Scannerを作成
009:    		Scanner scan = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスscanを初期化しています。

011:    		// 入力した文字列をlineに格納
012:    		String line = scan.nextLine();

ScannerクラスのnextLineメソッドで、キーボードから入力された1行を読み取り、String型のlineに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。

014:    		// 半角スペースで区切られた文字列を配列valuesに格納
015:    		String[] values = line.split( " ", 0 );

Stringクラスのsplitメソッドで、文字列lineを半角スペースで分割し、String型のリストvaluesに格納します。

017:    		// リストの作成
018:    		ArrayList numbers = new ArrayList();

String型のリストvaluesと同じ要素数で、int型のリストnumbersを初期化します。

020:    		// valuesの値をint型に変換し、numbersに格納
021:    		for ( int i = 0; i < values.length; i++ ) {
022:    			// 文字列values[ i ]をint型に変換
023:    			try {
024:    				int value = Integer.parseInt( values[ i ] );
025:    				// リストにvalueを追加
026:    				numbers.add( value );
027:    			} catch ( NumberFormatException ex ) {
028:    				// 数字に変換できなければnullを戻す
029:    				return null;
030:    			}
031:    		}

String型のリストvaluesの値をint型に変換し、Integer型のリストnumbersに追加します。Stringからintへの変換は、Integer.parseIntを使います。

Integer.parseIntメソッド

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

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

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

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

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

033:    		// Integer型のリストを戻す
034:    		return numbers;

作成したリストnumbersをreturn文で戻しています。

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

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

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

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

045:    		numbers = scanNumbers();

キーボード入力した値をint型のリストに戻しています。

047:    		// エラーの場合、returnで終了
048:    		if ( null == numbers ) {
049:    			return;
050:    		}

メソッドscanNumberの戻り値nullの場合はエラーなので、return文でmainを抜けています。

052:    		// 配列に格納された整数値を出力
053:    		for ( int i = 0; i < numbers.size(); i++ ) {
054:    			System.out.println( numbers.get( i ) );
055:    		}

リスト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へ