ITエンジニアのプレイングマネージャー化応援サイト

6.クラスメソッド

ここでは、スタティックメソッドを作成してみましょう。

スタティックメソッドはインスタンス化せずに呼び出せるメソッドです、そのためスタティックメソッド内から直接、自クラス内のインスタンス変数やインスタンスメソッドにアクセスすることができません。

なぜなら、実行した時にインスタンスがあるとは限らないからです。

次の章の「オブジェクトの利用」におけるインスタンスメソッドと比較してみてください。


以下のクラスをIDEにコピーして、プログラムを作成しなさい。
(以降の問題演習はこのクラスに追加変更を加えること。途中経過を別ファイルとして残す必要はない)

次のプログラムコードに、各設問の条件にあうメソッドを追加しなさい。
その後、そのメソッドが正しく動作することを検証するためのプログラムコードをmainメソッドの中に追加しなさい。

1.引数あり、戻り値あり

以下のクラスメソッドを作成しなさい。
(引数あり、戻り値あり)

メソッド名: getRectangularArea

引数列: double width, double height

戻り値の型: double

処理の内容: 幅が width、高さが height で表される長方形の面積を返す

 

2.引数なし、戻り値なし

以下のクラスメソッドを作成しなさい。
(引数なし、戻り値なし)

メソッド名: printE

引数列:なし

戻り値:なし

処理の内容: 自然対数の底e(≒2.718281828459045)の値を出力する

ヒント:

・自然対数の底eの値は Math クラスのクラス変数 E に格納されている。

・System.out.println(Math.E); で、この値を出力できる。

 

3.引数あり、戻り値なし

以下のクラスメソッドを作成しなさい。
(引数あり、戻り値なし)

メソッド名: sayHello

引数列: String name

戻り値:なし

処理の内容: 引数で渡されたnameに対して挨拶する

ヒント:メインメソッドは以下のようになる。

 

4.引数あり、戻り値なし

以下のクラスメソッドを作成しなさい。
(引数あり、戻り値なし)

メソッド名: printSquareArea

引数列: double oneSide

戻り値:なし

処理の内容: 引数で渡された値を一辺とする正方形の面積を出力する

 

5.引数が複数、戻り値なし

以下のクラスメソッドを作成しなさい。
(引数が複数、戻り値なし)

メソッド名: printMessage

引数列: String message, int count

戻り値:なし

処理の内容: 文字列 message を、count の回数だけ繰り返し出力する

ヒント:

・printMessage(“Hello”, 5); とすると、”Hello” という文字が5回出力される

 

6.引数なし、戻り値あり

以下のクラスメソッドを作成しなさい。
(引数なし、戻り値あり)

メソッド名: getMessage

引数列:なし

戻り値の型: String

処理の内容: “I LOVE YOUxxx” という文字列を返す

 

7.実引数がメソッド

mainメソッドの中で5のprintMessageメソッドの第一引数を6のgetMessageメソッドにして実行してみる。

8.戻り値の型がboolean

メソッド名: isEvenNumber

引数列: int value

戻り値の型: boolean

処理の内容: 引数で渡された値が偶数の場合は true、そうでない場合は false を返す。

 

9.引数が複数、戻り値あり

以下のクラスメソッドを作成しなさい。
(引数が複数、戻り値あり)

メソッド名:getMinValue

引数列:double a, double b

戻り値の型:double

処理の内容: 引数で受け取る2の値のうち、小さい方の値を返す(三項演算子を使うこと)

 

10.引数が配列

以下のクラスメソッドを作成しなさい。
(引数が配列)

メソッド名: getAverage

引数列:double[] array

戻り値の型:double

処理の内容: 引数で受け取る配列の要素の平均値を返す

 

11.戻り値が配列

以下のクラスメソッドを作成しなさい。
(戻り値が配列)

メソッド名: getRandomNumbers

引数列:int num

戻り値の型:int[]

処理の内容: 引数で受け取った数の乱数が入った配列(の参照)を返す。ただし、乱数は0~10の範囲とする。

12.メソッドからメソッドを呼ぶ

以下のクラスメソッドを作成しなさい。
(メソッドからメソッドを呼ぶ)

メソッド名: sayHellos

引数列: String name, int count

戻り値:なし

処理の内容:  3で作成したsayHelloメソッドを、count の回数だけ繰り返し呼ぶ。

ヒント:sayHellos(“imai”, 5); などと呼び出す。

 

13.メソッドチェーン

メソッドチェーンを使った問題です。

6のgetMessage()を使って得られた文字列の文字数をlength()メソッドで取得し、コンソールに出力する処理を1行で記述しなさい。

 

14.再帰を使って階乗計算をする

以下のクラスメソッドを作成して階乗計算(※)をしなさい。

※階乗計算とは
非負整数 n の階乗 n ! は、1 から n までのすべての整数の積のこと。
例:6!=6×5×4×3×2×1=720

メソッド名: fact

引数列:int n
※ただし、nは正

戻り値の型:int

処理の内容: もしも、n が0なら1を返す。そうでなければ、n * fact(n – 1) を返す。

アウトプット例:

 

15.再帰を使ってフィボナッチ数列を表示する

以下のクラスメソッドを作成してフィボナッチ数列(※)を表示しなさい。

※フィボナッチ数列とは
例:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…
のように最初の二項は 0, 1 であり、以後どの項もその直前の2つの項の和となっている数列のこと。

メソッド名: fib

引数列:int n
※ただし、nは0または正

戻り値の型:int

処理の内容: もしも、n が0または1なら1を返す。そうでなければ、fib(n – 1) + fib(n – 2) を返す。

アウトプット例:

 

16.再帰を使ってハノイの塔の円盤の操作を表示する

以下のクラスメソッドを作成してハノイの塔(※)の円盤の操作を表示しなさい。

※ハノイの塔とは(Wikipedia参照)
パズルの一種。
以下のルールに従ってすべての円盤を右端の杭に移動させられれば完成。

  1. 3本の杭と、中央に穴の開いた大きさの異なる複数の円盤から構成される。
  2. 最初はすべての円盤が左端の杭に小さいものが上になるように順に積み重ねられている。
  3. 円盤を一回に一枚ずつどれかの杭に移動させることができるが、小さな円盤の上に大きな円盤を乗せることはできない。

メソッド名: hanoi()

引数列:char x, char y, char z, int n
※ただし、x,y,zは杭の名前、nは円盤の枚数

戻り値の型:void

処理の内容: 各自で考えること。

アウトプット例:hanoi(‘A’, ‘B’, ‘C’, 3)

From A to C
From A to B
From C to B
From A to C
From B to A
From B to C
From A to C

※伝説では64枚の円盤の移し替えが終わったときに、世界は崩壊し終焉を迎えるそうです。試してみてください。

17.メソッドの切り出し

あなたは、テスト結果を管理するJavaプログラムを作成した。
プログラムの目的は合計点数と平均点数、平均年齢を求めることである。

出力例を以下に示す。

合計点数:968
平均点数:101
平均年齢:26.31578947368421

あなたが最初に書いたソースコードは以下の通りである。

ところが、処理が重複して書かれていることに気づいた。

合計を求める処理をメソッドに切り出しなさい。

なお、必要に応じてメソッド名やローカル変数名を自由につけること。

 

18.メソッドのオーバーロード

以下のプログラムは成績の合計と体重の合計を求めるプログラムである。

成績は整数で体重は小数点以下第一位の実数で与えられる。

体重の合計を正しく求めるためのメソッドを作成しなさい。

<アウトプット例>

スコア合計:968
体重合計:1492.9999999999998

 

19.ローカル変数

以下のプログラムを実行したら何が出力されるか?また、それはなぜか説明しなさい。

 

20.エラーの見方(おまけ)

以下のソースコードでは、3つのメソッドABCがあり、AからBをBからCを呼んでいる。

このプログラムを実行して、コンソールに表示されるエラーを読み解き、そこからエラーが出た際に我々はどこを見るべきかという一般原則を導き出しなさい。

 

21.オリジナル問題作成

将来の後輩のために良い問題が出来たら教えてください。

 

JavaSEの問題集トップページに戻る

新入社員研修ポータル

IT企業の人財育成に関することなら全てお任せ下さい TEL 0120-559-463 受付時間 10:00 - 17:00 (土・日・祝日除く)

ZOOMを使った遠隔研修メニュー(PDFが開きます)

ZOOMを使った遠隔研修

新人エンジニアのためのJavaタイピングゲーム

新人プログラマのためのプログラミング動画

YouTubeチャンネル

お問い合わせはこちらから

お名前 (必須)

メールアドレス (必須)

題名(件名)

メッセージ本文

確認画面は表示されません。上記内容にて送信しますので、よろしければチェックを入れてください。

新入社員研修ポータル

PAGETOP
Copyright © Say Consulting Group, Inc. All Rights Reserved.