[課題7]基本構文解答

今回の課題を真面目に対応された方、誠にありがとうございます。そして、お疲れ様でした。
1つ1つ丁寧に確認した場合、System.out.println( 値 );に直接ハードコーディングして、
public static final void main( String[] args){ }内に直接記述しても、
最低200行前後程度のサンプルが記述できたと思います。

本課題の解答のポイントは、演算子1つ1つを確かめて構文とその動作を貴方が丁寧に確認することです。

JavaSyntaxSamples.java
/**
 * Copyright 2017 yourcompany.
 * 本ソースファイルの著作権は株式会社yourcompanyに所属します。
 * 株式会社yourcompanyの許可なくして、本ソースファイルの
 * 配布、改修、コピー、利用を禁止します。
 * 会社名               :株式会社yourcompany
 * 組織名               :システム開発部
 * プロジェクトコード   :education
 * バージョン           :1.0
 * 最終更新日時         :2017/02/28 18:00
 */

//package宣言部
package jp.co.yourcompany.education.samples;

//import 宣言部
import java.util.ArrayList;
import java.util.List;

/**
*
* このクラスは、Javaの基本構文である
* 分岐構文、ループ構文を学ぶクラスです。
*
* @author Raita.Kuwabara
*
*/
public class JavaSyntaxSamples {

    /**
     * 全てのサンプルを実行する。
     */
    public void execAllSamples() {

        execIfSamples();

        execSwitchSamples();

        forSyntaxSample();

        forBreakSyntaxSample();

        forContinueSyntaxSample();

        forEachSyntaxSample();

        doubleLoopSyntaxSample();

        doubleLoopBreakSyntaxSample();

        whileSyntaxSample();

        doWhileSyntaxSample();

    }

    //---------------------------------------- サンプル実行出力開始・終了用

    /**
     * メソッド共通の開始文の定型出力
     * @param methodName 出力するメソッド名
     */
    private void outputStartMethod( String methodName ) {
        System.out.println("----- " + methodName + " START -----");
    }

    /**
     * メソッド共通の開始文の定型出力
     * @param methodName 出力するメソッド名
     */
    private void outputEndMethod( String methodName ) {
        System.out.println("----- " + methodName + " END -----");
    }

    //---------------------------------------------- 条件

    /**
     * if文の条件節を確かめるサンプルを実行する。
     */
    public void execIfSamples(){
        outputStartMethod( "execIfSamples" );

        System.out.println( greetingIfSyntax( null ) );
        System.out.println( greetingIfSyntax( "おはよう" ) );
        System.out.println( greetingIfSyntax( "こんにちは" ) );
        System.out.println( greetingIfSyntax( "こんばんは" ) );
        System.out.println( greetingIfSyntax( "今晩は" ) );
        System.out.println( greetingIfSyntax( "よぅ" ) );

        outputEndMethod( "execIfSamples" );
    }

    /**
     * if文の条件節を確かめるサンプルを実行する。
     */
    public void execSwitchSamples(){
        outputStartMethod( "execSwitchSamples" );

        System.out.println( greetingSwitchSyntax( null ) );
        System.out.println( greetingSwitchSyntax( "おはよう" ) );
        System.out.println( greetingSwitchSyntax( "こんにちは" ) );
        System.out.println( greetingSwitchSyntax( "こんばんは" ) );
        System.out.println( greetingSwitchSyntax( "今晩は" ) );
        System.out.println( greetingSwitchSyntax( "よぅ" ) );

        outputEndMethod( "execSwitchSamples" );
    }

    /**
     * if文の条件節を確かめるサンプルメソッド
     * 入力値に対する英語の挨拶を返す。
     * @param greetMessage 日本語の挨拶(こんにちは、おはよう等)
     * @parma result 返答挨拶
     */
    private String greetingIfSyntax( String greetMessage ) {

        System.out.println( "貴方の挨拶=" + greetMessage );

        //null値は、初期値""にする。
        String str = ( greetMessage == null) ?  "" : greetMessage ;
        String result = "";

        if ( "おはよう".equals( str ) ) {
            result = "Good morning";
        } else if ( "こんちには".equals( str ) ) {
            result = "Hello";
        } else if ( "今晩は".equals( str ) || "こんばんは".equals( str ) ) {
            System.out.println( "Good evening" );
            result = "Good evening";
        } else {
            result = "How are you ?";
        }
        return result;
    }

    /**
     * switch文の条件節を確かめるサンプルメソッド
     * 入力値に対する英語の挨拶を返す。
     * @param greetMessage 日本語の挨拶(こんにちは、おはよう等)
     * @parma result 返答挨拶
     */
    private String greetingSwitchSyntax( String greetMessage ) {

        System.out.println( "貴方の挨拶=" + greetMessage );
        String str = ( greetMessage == null) ?  "" : greetMessage ;
        String result = "";

        switch( str ){
            case "おはよう":
                result =  "Good morning";
                break;
            case "こんにちは":
                result = "Hello";
                break;
            case "今晩は":
            case "こんばんは":
                result = "Good evening";
                break;
            default:
                result = "How are you ?";
                break;
        }
        return result;
    }

    /**
     * for文サンプルメソッド
     * 配列データをループで全て出力する。
     */
    public void forSyntaxSample( ) {
        outputStartMethod( "forSyntaxSample" );

        String[] recode = { "カラム01" , "カラム02" , "カラム03" };

        for ( int i = 0 ; i < recode.length ; i++ ) {
            System.out.println("recode[ " + i +"]=" + recode[i] );
        }
        outputEndMethod( "forSyntaxSample" );
    }

    /**
     * for文内のbreakサンプルメソッド
     * 配列データをループで全て出力する。
     */
    public void forBreakSyntaxSample( ) {
        outputStartMethod( "forBreakSyntaxSample" );

        String[] recode = { "カラム01" , "カラム02" , null , "カラム03" };

        for ( int i = 0 ; i < recode.length ; i++ ) {
            if( recode[i] == null){
                System.out.println("【ERROR】recode[ " + i +"]にnullが設定されています。処理を中断します。");
                break;
            }
            System.out.println("recode[ " + i +"]=" + recode[i] );
        }

        outputEndMethod( "forBreakSyntaxSample" );
    }

    /**
     * for文内のbreakサンプルメソッド
     * 配列データをループで全て出力する。
     */
    public void forContinueSyntaxSample() {
        outputStartMethod( "forContinueSyntaxSample" );

        String[] recode = { "カラム01" , "カラム02" , "" , "カラム03" };

        for ( int i = 0 ; i < recode.length ; i++ ) {
            if( recode[i].length() == 0){
                System.out.println("【WARN】recode[ " + i +"]に長さ0の文字列が設定されています。");
                break;
            }
            System.out.println("recode[ " + i +"]=" + recode[i] );
        }

        outputEndMethod( "forContinueSyntaxSample" );
    }

    /**
     * 2重ループサンプルメソッド
     * 2次元配列データをループで全て出力する。
     */
    public void doubleLoopSyntaxSample() {
        outputStartMethod( "doubleLoopSyntaxSample" );

        String[][]personalTable = new String[3][5];
        String[] oneRecode = {"山田" , "太郎" , "ヤマダ" , "タロウ" , "26" , "東京都" };
        String[] towRecode = {"山田" , "花子" , "ヤマダ" , "花子" , "17" , "大阪府" };
        personalTable[0] = oneRecode;
        personalTable[1] = towRecode;

        for ( int i = 0 ; i < personalTable.length ; i++ ) {
            String recode[] = personalTable[i];
                System.out.println("personalTable[" + i + "][" + j + "]=" + personalTable[i][j]);
                System.out.println("recode[" + j + "]=" + recode[j]);
            }
        }

        outputEndMethod( "doubleLoopSyntaxSample" );
    }

    /**
     * 2重ループサンプルメソッド
     * 2次元配列データをループで全て出力する。
     */
    public void doubleLoopBreakSyntaxSample() {
        outputStartMethod( "doubleLoopBreakSyntaxSample" );

        String[][]personalTable = new String[3][5];
        String[] oneRecode = {"山田" , "太郎" , "ヤマダ" , "タロウ" , "26" , "東京都" };
        String[] towRecode = {"山田" , "花子" , "ヤマダ" , "花子" , "17" , "大阪府" };
        String[] thirdRecode = {"田中" , "太郎" , "タナカ" , "タロウ" , "48" , "千葉県" };
        personalTable[0] = oneRecode;
        personalTable[1] = towRecode;

        List<String[]> errorRecode = new ArrayList<String[]>();

        recodeLoop:for ( int i = 0 ; i < personalTable.length ; i++ ) {
            String recode[] = personalTable[i];
            columnLoop:for( int j = 0 ; j < recode.length ; j ++ ){

                if( j == 4 ){
                    if( Integer.valueOf( recode[4] ).intValue() < 18 ){
                        errorRecode.add( recode );
                        System.out.println("【ERROR】personalTable[" + i + "]行目は未成年データ" );
                        break recodeLoop;
                    }
                }

                System.out.println("personalTable[" + i + "][" + j + "]=" + personalTable[i][j] );
                System.out.println("recode[" + j + "]=" + recode[j] );
            }
        }
        outputEndMethod( "doubleLoopBreakSyntaxSample" );
    }

    /**
     * 拡張for文サンプルメソッド
     */
    public void forEachSyntaxSample() {
        outputStartMethod( "forEachSyntaxSample" );

        List<String> errorMsgList = new ArrayList<String>();
        errorMsgList.add(" This is a first message ." );
        errorMsgList.add(" This is a secound message ." );
        errorMsgList.add(" This is a third message ." );

        int counter = 0;
        for( String errorMsg : errorMsgList ){
            System.out.println("errroMsgList[" + counter + "]=" + errorMsg );
            counter++;
        }

        outputEndMethod( "forEachSyntaxSample" );
    }

    //-------------------------------------------------- while samples
    /**
     * while文サンプルメソッド
     */
    public void whileSyntaxSample() {
        outputStartMethod( "whileSyntaxSample" );

        String[] oneRecode = {"山田" , "太郎" , "ヤマダ" , "タロウ" , "26" , "東京都" };
        int index = 0;
        while( index < oneRecode.length ){
            System.out.println("oneRecode[" + index + "]=" + oneRecode[ index ] );
            index++;
        }
        //このようなケースはfor文を利用すべき。
        //index++をし忘れて無限ループになる間違いが起きやすい
        outputEndMethod( "whileSyntaxSample" );
    }

    /**
     * dowhile文サンプルメソッド
     */
    public void doWhileSyntaxSample() {
        outputStartMethod( "doWhileSyntaxSample" );

        String[] oneRecode = {"山田" , "太郎" , "ヤマダ" , "タロウ" , "26" , "東京都" };
        int index = 0;

        //ループの終了条件は index < 0 で終了しますが、dowhile文は必ず1回ループされます。
        do{
            System.out.println("oneRecode[" + index + "]=" + oneRecode[ index ] );
            index++;
        } while ( index <  0);

        outputEndMethod( "doWhileSyntaxSample" );
    }

    /**
     * Javaコマンドがサンプルを起動する。
     * @param args 実行引数[指定不要]
     */
    public static final void main( String[] args ){
        JavaSyntaxSamples javaSyntaxSamples = new JavaSyntaxSamples();
        javaSyntaxSamples.execAllSamples();
    }
}
						
実行コマンドの手順
c:¥projects¥education>javac -d deploy¥classes -s src¥main¥java
 src¥main¥java¥jp¥co¥yourcompany¥education¥samples¥JavaSyntaxSamples.java -encoding UTF8
c:¥projects¥education>jar -cvf deploy¥education-main.jar -C deploy¥classes .
c:¥projects¥education>java -cp deploy¥education-main.jar jp.co.yourcompany.education.samples.JavaSyntaxSamples
						
実行結果
----- execIfSamples START -----
貴方の挨拶=null
How are you ?
貴方の挨拶=おはよう
Good morning
貴方の挨拶=こんにちは
How are you ?
貴方の挨拶=こんばんは
Good evening
Good evening
貴方の挨拶=今晩は
Good evening
Good evening
貴方の挨拶=よぅ
How are you ?
----- execIfSamples END -----
----- execSwitchSamples START -----
貴方の挨拶=null
How are you ?
貴方の挨拶=おはよう
Good morning
貴方の挨拶=こんにちは
Hello
貴方の挨拶=こんばんは
Good evening
貴方の挨拶=今晩は
Good evening
貴方の挨拶=よぅ
How are you ?
----- execSwitchSamples END -----
----- forSyntaxSample START -----
recode[ 0]=カラム01
recode[ 1]=カラム02
recode[ 2]=カラム03
----- forSyntaxSample END -----
----- forBreakSyntaxSample START -----
recode[ 0]=カラム01
recode[ 1]=カラム02
【ERROR】recode[ 2]にnullが設定されています。処理を中断します。
----- forBreakSyntaxSample END -----
----- forContinueSyntaxSample START -----
recode[ 0]=カラム01
recode[ 1]=カラム02
【WARN】recode[ 2]に長さ0の文字列が設定されています。
----- forContinueSyntaxSample END -----
----- forEachSyntaxSample START -----
errroMsgList[0]= This is a first message .
errroMsgList[1]= This is a secound message .
errroMsgList[2]= This is a third message .
----- forEachSyntaxSample END -----
----- doubleLoopSyntaxSample START -----
personalTable[0][0]=山田
recode[0]=山田
personalTable[0][1]=太郎
recode[1]=太郎
personalTable[0][2]=ヤマダ
recode[2]=ヤマダ
personalTable[0][3]=タロウ
recode[3]=タロウ
personalTable[0][4]=26
recode[4]=26
personalTable[0][5]=東京都
recode[5]=東京都
personalTable[1][0]=山田
recode[0]=山田
personalTable[1][1]=花子
recode[1]=花子
personalTable[1][2]=ヤマダ
recode[2]=ヤマダ
personalTable[1][3]=花子
recode[3]=花子
personalTable[1][4]=17
recode[4]=17
personalTable[1][5]=大阪府
recode[5]=大阪府
personalTable[2][0]=null
recode[0]=null
personalTable[2][1]=null
recode[1]=null
personalTable[2][2]=null
recode[2]=null
personalTable[2][3]=null
recode[3]=null
personalTable[2][4]=null
recode[4]=null
----- doubleLoopSyntaxSample END -----
----- doubleLoopBreakSyntaxSample START -----
personalTable[0][0]=山田
recode[0]=山田
personalTable[0][1]=太郎
recode[1]=太郎
personalTable[0][2]=ヤマダ
recode[2]=ヤマダ
personalTable[0][3]=タロウ
recode[3]=タロウ
personalTable[0][4]=26
recode[4]=26
personalTable[0][5]=東京都
recode[5]=東京都
personalTable[1][0]=山田
recode[0]=山田
personalTable[1][1]=花子
recode[1]=花子
personalTable[1][2]=ヤマダ
recode[2]=ヤマダ
personalTable[1][3]=花子
recode[3]=花子
【ERROR】personalTable[1]行目は未成年データ
----- doubleLoopBreakSyntaxSample END -----
----- whileSyntaxSample START -----
oneRecode[0]=山田
oneRecode[1]=太郎
oneRecode[2]=ヤマダ
oneRecode[3]=タロウ
oneRecode[4]=26
oneRecode[5]=東京都
----- whileSyntaxSample END -----
----- doWhileSyntaxSample START -----
oneRecode[0]=山田
----- doWhileSyntaxSample END -----
						

JavaSyntaxSamples.javaのダウンロードと実行方法

java_sample7.zipファイルを「c:¥download¥java¥samples¥」に保存して下さい。

java_sample7.zipファイルを「c:¥projects」配下に展開して下さい。

コマンドプロンプトを起動して、「sample7.bat」を実行して下さい。

javac,jar,javaコマンドが随時実行されて、実行結果の内容が表示されます。

Linux,Unix,iOSの方はバッチファイルはお手数ですが作成して下さい。改行コードが「CRLF」の点ご留意ください。