<目次>
- 演習1: Javaに慣れよう
- 目的
- 課題解決に関するノウハウの共有。
- 「早く解くこと」ではない。
- 課題解決に関するノウハウの共有。
- やり方
- 問題文が理解できない場合にはすぐに質問すること。(ここで悩むのは時間の無駄)
- driverとnavigatorを決める。(長くても10~15分程度で交代しよう)
- driver
- 実際に作業する(手を動かす)人。それ以外の人は直接作業してはいけない。
- navigator
- 作業方針や、具体的な手順等を提案する。分からないことは話し合って良い。
- 例
- 「まず問題読んでみよっか。〜〜(問題文)〜〜。ん、どういうことだろう?」
- 例
- driverの作業を眺め、気づいたこと・分からないことを質問すること。作業を中断させて構わない。
- driverのやり方よりも良い方法があると感じたら、その旨を話すこと。
- 作業方針や、具体的な手順等を提案する。分からないことは話し合って良い。
- driver
- Java言語の基本的な書式に慣れよう。
- 考えてることを説明できるようになろう。
- 分からない時には作業を止めて質問できるようになろう。
- APIドキュメントから、Stringクラスについて調べよう。
- equals()メソッドについて調べ、その機能を説明せよ。(1〜2行でOK)
- length()メソッドについて調べ、その機能を説明せよ。(1〜2行でOK)
- replace()メソッド、もしくはreplaceAll()メソッドについて調べ、その機能を説明せよ。(1~2行でOK)
- split()メソッドについて調べ、その機能を説明せよ。(1〜2行でOK)
- 上記以外の任意のメソッド一つ以上について、その機能を説明せよ。(1~2行でOK)
- 補足
- Google検索ではなく、ドキュメント上で「ページ内検索」を使って探し出すこと。
- 提出方法
- 2つ以上のメソッドについての説明文を、自身のペア番号フォルダにアップロードすること。書式は自由です。(Googleドキュメントを新規作成し、そこに結果がわかるように掲載してください)
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 2つ以上のメソッドについての説明文を、自身のペア番号フォルダにアップロードすること。書式は自由です。(Googleドキュメントを新規作成し、そこに結果がわかるように掲載してください)
- 論理積(AND)を算出したい。以下の仕様を満たすメソッドを作成せよ。
- 仕様
- メソッド名: calcLogicalAnd
- 引数
- boolean arg1
- boolean arg2
- 戻り値
- boolean。arg1とarg2の論理積(AND)の結果を、boolean型で返す。
- 提出方法
- ソースファイル名は Ex1_1.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 配列で与えられた数値の総和を求めたい。以下の仕様を満たすメソッドを作成せよ。
- 仕様
- メソッド名: calcSumOfInteger
- 引数
- int[] data
- 戻り値
- int。配列dataの総和を、int型で返す。
- 提出方法
- ソースファイル名は Ex1_2.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- Level 1: 以下のコードを実行し、出力を確認せよ。
public class NotANumber {
public static void main(String[] arg){
double inf = Double.POSITIVE_INFINITY;
double result = inf - inf;
System.out.println(result);
}
}
-
提出方法
- ソースファイル名は Ex1_3.java とすること。
- これに伴い、クラス名も変更する必要がある。どう変更すべきか検討し、変更すること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに掲載してください)
- ソースファイル名は Ex1_3.java とすること。
-
Level 2: APIドキュメントで Double (java.lang.Double) を探し、フィールド変数 MAX_VALUE, POSITIVE_INFINITY、メソッド isNaN() について調査せよ。
- 提出方法
- 調査結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
-
Level 3: Level 1のコードを、「result に保存されている値が NaN ならば、【答えはありません】と出力する」ように修正せよ。
-
提出方法
- ソースファイル名は Ex1_3_3.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- double型配列には NaN が入っていることもある。NaNは除外して、総和を求めるメソッドを作成せよ。
- 仕様
- メソッド名: calcSumOfDouble
- 引数
- double[] data
- 戻り値
- double。配列dataの総和を、double型で返す。NaNは計算に含めない。
- mainメソッドでの動作確認用コード例
double [] data = {1.0, 2.0, Double.NaN, 3.0};
double result = calcSumOfDouble(data);
System.out.println(result); // => 6.0
- 提出方法
- ソースファイル名は Ex1_4.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 複数の文字列が配列で用意されているとする。これを連結して一つの文字列を返すメソッドを作成せよ。
- 仕様
- メソッド名: concatenateStrings
- 引数
- String[] data
- 戻り値
- String。配列data内の文字列を、連結した文字列を String 型で返す。
- mainメソッドでの動作確認用コード例
String[] data = {"This", "is", "test."};
String result = concatenateStrings(data);
System.out.println(result); // => "Thisistest."
- 提出方法
- ソースファイル名は Ex1_5.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 文字列を連結する際に、間にスペースを入れよう。
- メソッド名: concatenateStringsWithSpace
- 引数
- String[] data
- 戻り値
- String。配列data内の文字列から、スペース付きで連結した文字列を作成し、String 型で返す。
- 注意点
- スペースは間だけに加えること。例えば、" This is test."や、"This is test. "は、冒頭と後尾にもついてるので、正解ではありません。
- mainメソッドでの動作確認用コード例
String[] data = {"This", "is", "test."};
String result = concatenateStringsWithSpace(data);
System.out.println(result); // => "This is test."
System.out.println(result.equals("This is test.")); // => true
- 提出方法
- ソースファイル名は Ex1_6.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 以下のように標準出力するメソッドを作成せよ。
- 仕様
- メソッド名: printStars
- 引数
- int number
- 戻り値
- void。なし。numberで指定された数に応じて、* を連結した文字列を生成し、標準出力する。
- mainメソッドでの動作確認用コード例
printStars(3); // => "***"
printStars(5); // => "*****"
- 提出方法
- ソースファイル名は Ex1_7.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 以下のように標準出力するメソッドを作成せよ。
- 仕様
- メソッド名: printStarsMultiline
- 引数
- int number
- 戻り値
- void。なし。numberで指定された数に応じて、* を連結した文字列を生成し、標準出力する。この際、連結する度に出力すること。
- 実行イメージ
// printStarsMultiline(3); 実行時の標準出力結果
*
**
***
// printStarsMultiline(5); 実行時の標準出力結果
*
**
***
****
*****
- 提出方法
- ソースファイル名は Ex1_8.java とすること。
- packageは driver 担当者とすること。
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は google ドライブで確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- 文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
- 出典: 言語処理100本ノック)
- 補足
- ソースコードを記述するファイル名は「Ex1_9.java」とすること。
- パッケージ名をdriver担当者にすること。
- 文字列はString型もしくはchar型配列で表現すること。(どちらでもかまわない)
- 文字列"stressed"を引数として受け取り、それを逆順に並び替えた文字列"desserts"を返す自作メソッド作成すること。(最初はmainメソッドに直接記述して構わない。最終版には自作メソッドを含むこと)
- 提出方法
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- ペア番号は「ペアプロ調整-1018」で確認下さい。3名チームは「2名が座ってる席」をペア番号にしてください。
- 実行結果をアップロードすること。書式は自由です。(Googleドキュメントに結果がわかるように掲載してください)
- ソースコード完成版を自身のペア番号フォルダにアップロードすること。
- 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
- 出典: 言語処理100本ノック)
- 補足
- ソースコードを記述するファイル名は「Ex1_10.java」とすること。
- パッケージ名をdriver担当者にすること。
- 文字列はString型もしくはchar型配列で表現すること。(どちらでもかまわない)
- 文字列"パタトクカシーー"を引数として受け取り、それを前述通りに連結した文字列"パトカータクシー"を返す自作メソッド作成すること。(最初はmainメソッドに直接記述して構わない。最終版には自作メソッドを含むこと)
- 提出方法
- 完成版と実行結果をアップロードすること。
- "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.
- 出典: 言語処理100本ノック)
- 補足
- Javaのリストはまだ扱っていないので、ここではリスト作成にこだわらなくても良い。
- ソースコードを記述するファイル名は「Ex1_11.java」とすること。
- パッケージ名をdriver担当者にすること。
- 文字列はString型もしくはchar型配列で表現すること。(どちらでもかまわない)
- 「文を単語に分解し」では、スペースを区切り文字として分解しよう。
- 「各単語の(アルファベットの)文字数」では、単語に含まれる文字数である点に注意。
- 例えば、"Now"は3文字だが、"drink,"は5文字である。","は含まない。同様に"mechanics."も9文字となる。つまり、何とかして「,」や「.」を除外する必要がある。
- どうしたら良いだろうか?
- Stringクラスに使えそうなメソッドがないだろうか?
- 除外: delete, remove, replace, translate といった単語を含むメソッドはないだろうか?
- 文字列"Now ~~~ mechanics."を引数として受け取り、それを前述通りにカウントした結果を直接出力する自作メソッド作成すること。まだJavaのリストは扱っていないため、本メソッドは戻り値は無くても構わない。(最初はmainメソッドに直接記述して構わない。最終版には自作メソッドを含むこと)
- 提出方法
- 完成版と実行結果をアップロードすること。