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