今回の課題を真面目に対応された方、誠にありがとうございます。そして、お疲れ様でした。
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 -----
java_sample7.zipファイルを「c:¥download¥java¥samples¥」に保存して下さい。
java_sample7.zipファイルを「c:¥projects」配下に展開して下さい。
コマンドプロンプトを起動して、「sample7.bat」を実行して下さい。
javac,jar,javaコマンドが随時実行されて、実行結果の内容が表示されます。
Linux,Unix,iOSの方はバッチファイルはお手数ですが作成して下さい。改行コードが「CRLF」の点ご留意ください。