2020.08.19
Javaプログラミング
キーボード入力→リスト
整数を半角スペースで区切って入力してください 8 11 3 5 88
numbers.add( 8 ); numbers.add( 11 ); numbers.add( 3 ); numbers.add( 5 ); numbers.add( 88 );
Javaソースコード
ScannerSample3.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057
import java.util.ArrayList; import java.util.Scanner; public class ScannerSample3 { // キーボード入力した文字列をリストに格納 private static ArrayListscanNumbers( ) { // Scannerを作成 Scanner scan = new Scanner( System.in ); // 入力した文字列をlineに格納 String line = scan.nextLine(); // 半角スペースで区切られた文字列を配列valuesに格納 String[] values = line.split( " ", 0 ); // リストの作成 ArrayList numbers = new ArrayList (); // valuesの値をint型に変換し、numbersに格納 for ( int i = 0; i < values.length; i++ ) { // 文字列values[ i ]をint型に変換 try { int value = Integer.parseInt( values[ i ] ); // リストにvalueを追加 numbers.add( value ); } catch ( NumberFormatException ex ) { // 数字に変換できなければnullを戻す return null; } } // Integer型のリストを戻す return numbers; } // メイン public static void main( String[] args ) { // ArrayList numbers; // 入力した整数を配列に格納 System.out.println( "整数を半角スペースで区切って入力してください" ); numbers = scanNumbers(); // エラーの場合、returnで終了 if ( null == numbers ) { return; } // 配列に格納された整数値を出力 for ( int i = 0; i < numbers.size(); i++ ) { System.out.println( numbers.get( i ) ); } } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis ScannerSample3.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac ScannerSample3.java
実行
C:\talavax\javasample>java ScannerSample3
Javaソースコードの解説
ここから、ソースを順番に説明していきます。
001 002
import java.util.ArrayList; import java.util.Scanner;
004
public class ScannerSample3 {
クラス名を、ScannerSample3としています。
005 006 007
// キーボード入力した文字列をリストに格納 private static ArrayListscanNumbers( ) {
008 009
// Scannerを作成
Scanner scan = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
011 012
// 入力した文字列をlineに格納 String line = scan.nextLine();
ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
014 015
// 半角スペースで区切られた文字列を配列valuesに格納 String[] values = line.split( " ", 0 );
017 018
// リストの作成 ArrayListnumbers = new ArrayList ();
020 021 022 023 024 025 026 027 028 029 030 031
// valuesの値をint型に変換し、numbersに格納 for ( int i = 0; i < values.length; i++ ) { // 文字列values[ i ]をint型に変換 try { int value = Integer.parseInt( values[ i ] ); // リストにvalueを追加 numbers.add( value ); } catch ( NumberFormatException ex ) { // 数字に変換できなければnullを戻す return null; } }
Integer.parseIntメソッド
public static int parseInt( String s, int radix )
・引数に指定された基数をもとにして、文字列の引数を符号付き整数として構文解析します。 パラメータ s : 文字列 radix : 基数 戻り値 指定された基数での、文字列引数で表される整数
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列がint型に変換できないときにcatch { ~ }の処理が実行されます。
033 034
// Integer型のリストを戻す return numbers;
作成したリストnumbersをreturn文で戻しています。
038 039
// メイン public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
043 044
// 入力した整数を配列に格納 System.out.println( "整数を半角スペースで区切って入力してください" );
printlnメソッドで、メッセージ”整数を半角スペースで区切って入力してください"をコンソール出力しています。printlnメソッドを使っているので、コンソール入力した文字はメッセージの下側に表示されます。printメソッドを使った場合、コンソール入力した文字はメッセージの右側に表示されます。
045
numbers = scanNumbers();
047 048 049 050
// エラーの場合、returnで終了 if ( null == numbers ) { return; }
052 053 054 055
// 配列に格納された整数値を出力 for ( int i = 0; i < numbers.size(); i++ ) { System.out.println( numbers.get( i ) ); }
リストnumbersの値を全て、printlnメソッドでコンソール出力しています。
以上です。