text_11.dvi
16
0
0
全文
(2) 目次 第 11 章. 11.1 11.2 11.3 11.4. Java (6) | ライブラリ (数学、入出力など ) 第 11 回演習内容. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :. クラス・ライブラリ. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :. 数学関係のクラス・ライブラリ 標準入出力. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :. 11.4.1 標準入出力ストリーム 11.4.2 データ入力 : : : : : : 11.5 ユーティリティパッケージ : : 11.5.1 配列の操作 : : : : : : 11.5.2 日付と時刻 : : : : : : 11.6 ファイルと入出力 : : : : : : : 11.6.1 ファイルからの入力 : 11.6.2 データ出力 : : : : : : 11.7 課題 : : : : : : : : : : : : : :. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :. {i{. 1 1 1 2 4 4 5 6 7 8 9 9 10 13.
(3) 第 11 章 Java (6) | ライブラリ (数学、入出力 など ) 11.1. 第 11 回演習内容. 第 11 回では、Java のライブラリ (数学、入出力など ) についての演習を行います。 第 11 回の演習内容は以下の通りです。 クラス・ライブラリ 数学関係ライブラリ 標準入出力ライブラリ ユーティリティライブラリ ファイル入出力ライブラリ. 11.2 クラス・ライブラリ クラス・ライブラリは、クラスの集合体に名前を与えたものです。クラス・ライブラリは、互いに関連 のあるクラスをグループ 化し 、クラスのための名前空間を定義します。. Java ではクラス・ライブラリをパッケージ (package) と呼びます。Java 2 で様々なパッケージが提供さ れており、これらを有効に利用することができます。パッケージはグループごとに階層構造を成していま す。そうしたパッケージを指定する場合、パッケージ名はピリオド (.) で区切ります。例えば 、java.io は、 パッケージ java 内の、パッケージ io を示しています。なお、パッケージ java はクラス・ライブラリの 基本となる部分です。また、パッケージ io は入出力処理に関連するクラスを集めたものです。 主なパッケージとその機能を表 11.1 に示します。. 表 11.1: 主なパッケージ パッケージ名. 説明. java.applet. アプレット作成用のクラス. java.awt. GUI 作成用のクラス イベント処理用のクラス イメージデータ処理用のクラス 入出力用のクラス Java 言語の基本動作用のクラス ネットワーク用のクラス セキュリティ用のクラス ユーティリティのクラス ウインド ウツールキット用のクラス. java.awt.event java.awt.image java.io java.lang java.net java.security java.util javax.swing. 1.
(4) パッケージに関してより詳しいことについては、Java のリファレンスマニュアルを参照してください。 パッケージを利用するためには、import 文を用い、プログラムの先頭で宣言しパッケージをロードしな ければなりません。import 文は、以下のように記述します。. . import パッケージ名. パッケージ内のあるクラスをロード する場合は import パッケージ名. クラス名. と書きます。パッケージ内のすべての public クラスをロードしたい時には、次のように書きます。 import パッケージ名.*. . String, System, Math, Thread などの Java の基本的なクラスについては、import 文で宣言することなく. 利用できます。 クラス・ライブラリで定義されているメンバにはクラスメソッド やクラスフィールド もあります。例え ば 、Math クラスのすべてのメンバはクラスメソッドとクラスフィールドです。インスタンスを作成せずに クラス名からメンバをアクセスします。. 11.3. 数学関係のクラス・ライブラリ. 数学関係のメソッド や定数を集めたものが Math クラス・ライブラリです。Math クラスの主なメソッド を表 11.2 に示します。 表 11.2: Math クラスの主なメソッド 種類 絶対値. 記述. 正弦 余弦 正接 逆正弦 逆余弦 逆正接 平方根 指数 対数 べき乗 四捨五入 四捨五入 切り上げ 切り捨て 乱数 最大値. sin(double a) cos(double a) tan(double a) asin(double a) acos(double a) atan(double a) sqrt(double a) exp(double a) log(double a) pow(double a, double b) rint(float a) round(double a) ceil(double a) floor(double a) random() max(int a, int b). double. 最小値. min(int a, int b). a,b と同じ. abs(int a). 戻り値 a と同じ. 説明 a の絶対値を返す。 a には int, long, float,double 型が指定可能。 a (ラジアン )の正弦を返す a (ラジアン )の余弦を返す a (ラジアン )の正接を返す 1:0 a 1:0 の逆正弦を返す ( 2 asin(a) 2 )。 1:0 a 1:0 の逆余弦を返す (0:0 acos(a) )。 atan(a) a の逆正接を返す ( 2 2 )。 a (a > 0) を返す。 exp a を返す。 loge a (a > 0) を返す。 b a を返す。 一番近い整数値を返す。 実数を整数に四捨五入して整数値を返す。 a 以上の最小整数値を返す。 a 以下の最大整数値を返す。 0.0 から 1.0 の範囲の疑似乱数を返す。 a と b の大きい方の値を返す。a,b には long,float,double 型が指定可能。 a と b の小さい方の値を返す。a,b には long,float,double 型が指定可能。. double double. ; ; p. double double double double double double double double double double double double a,b と同じ. 2. ; . ; . .
(5) . Math クラスのメンバは、すべてクラスフィールド やクラスメソッドとして定義されています。そのため、 Math クラスのメンバを利用するときは、以下のような形式で記述します。 Math. フィールド 名. . Math. メソッド 名 (引数). 表 11.3: Math クラスの主なフィールド 種類 円周率 自然対数の底. フィールド. 説明. double PI. . = 3:14159265:::. double E. e. = 2:71828182845:::. Math クラスの主なフィールド を表 11.3 に示します。また、Math クラスのメンバを利用した例を以下に. 示します。 double double double double double. ceil = Math.ceil(44.23). // ceil = 45.0 floor = Math.floor(44.23). // floor = 44.0 floor1 = Math.floor(-44.23). // floor1 = -45.0 rint = Math.rint(-44.23). // rint = -44.0 round = Math.round(-44.23). // round = -44.0. . double cos = Math.cos( Math.PI / 3) // cos = 0.5 double root= Math.sqrt(2.0). // root = 1.414.... Math.random は乱数を発生するメソッド で、0 以上 1 未満の実数を返します。たとえば 、サイコロのよ うに 1 から 6 までのどれかの整数を得たい場合は、次のように記述します。 // 1 ∼ 6 までの乱数を発生 int dice = (int)(Math.floor(Math.random() * 6) + 1). // 他の方法で 1 ∼ 6 までの乱数を発生 int betterdice = (int)(Math.random() * 1000) % 6 + 1. . 演習 11-1 以下の仕様を満す Function クラスを作成せよ。. 4 つの実数値を返すクラスメソッド f(double x), g(double x), h(double x), r(int k) を実装 する。f g h r は以下の定義に従った演算結果を返す。 2 a) 関数 f (x) = 1 ; e;2x b) 関数 g (x) = 13 x3 ; 4x2 + 15x + 3 p 2 2 2 c) 関数 h(x) = ( arcsin x + x 1 ; x 1 ∼ k までの乱数を発生 (k > 0) d) 関数 r(k ) = 発生した乱数以上の最小整数値を返す main() メソッド では作成したクラスメソッド を利用し 、以下の計算を行った結果を出力する。. {. f. (;0:3) f (0:7) 3. .
(6) {. g x. {. h. {. r. ( )(x = 1 2 ::: 12) (; 8 ) h( 4 ). (99). 11.4. 標準入出力. 11.4.1. 標準入出力スト リーム. C などの他のプログラミング言語と同様に、Java はファイルなどを対象とした入出力を行うことができ ます。. Java では、ストリームによる入出力機能が System クラスに組み込まれています。 System クラスには 、標準入力, 標準出力, 標準エラー出力を取り扱うためのメンバとして、それぞれ in, out, err が用意されています。in は InputStream クラスのインスタンスとして定義されています。また、 out と err は PrintStream クラスのインスタンスです。 標準出力 出力に用いられる System.out と System.err は 、print, println など の メソッド を使うことができ ます。 System.out.print(出力データ). . System.out.println(出力データ). println メソッド は print メソッド と異なり、最後に改行を付け加えます。. . 標準入力 標準入力に用いられる System.in は、read() メソッドを使うことができます。具体的には、以下のよ うに二つの使い方があります。 標準入力命令 (1). . System.in.read(). 入力ストリームから 1 バイト読み込み対応する整数値 (0 から 255) を返します。読み込んだデータの終わ. りに到達すると、-1 を返します。 標準入力命令 (2). . System.in.read(配列名 ]). 入力ストリームから配列の長さ分のデータを読み込み、配列に格納します。また、戻り値として読み込ん. . だデータのバイト数を返します。 入出力ライブラリを使うためには、java.io パッケージをロード する必要があります。また、入出力ラ イブラリが投げる例外に対応できるように、try ∼ catch を使って例外処理を記述する必要があります1 。 次のプログラムは、標準入力で読み込んだ文字列を標準出力に出力するプログラムです。 1 あるいは throws 節を入出力ライブラリを使用するメソッド の宣言に加えて、例外を投げる可能性があることを明示する必要が あります。throws 節については参考文献を参照してください。. 4.
(7) . // InputTest.java import java.io.*. public class InputTest { public static void main(String ] args) { int c = 0. System.out.println("Input: "). try{ while (c != '\n'){ c = System.in.read(). System.out.println("output: " + (char)c). } } catch (Exception e) { System.err.println(e). } } }. . プログラムを実行し 、Test と入力すると、次のような結果が得られます。 $ java Input: Test output: output: output: output: output:. . InputTest. T e s t. . 11.4.2 データ入力 先に説明した System.in.read は、単にデータを読み込むだけの機能しかないため、数値の読み込みな どに使う場合には不便です。一般的に 、標準入力からデータを読み込む場合には InputStreamReader と BufferedReader を組み合わせて利用します。. . InputStreamReader ファイル変数 = new InputStreamReader(ファイル記述). BufferedReader バッファ変数 = new BufferedReader(ファイル変数). ここで、ファイル記述は標準入力 System.in とします。. . BufferedReader クラスを利用することで 、1 行ごとのデータの読み込みに readline() メソッド を使え. るようになります。このとき、読み込んだデータは文字列型として扱われます。. . 文字列を数値に変換するには、以下のように数のクラスに定義された型変換のためのクラスメソッド を利 用します。 String s = br.readLine(). int i = Integer.valueOf(s).intValue(). long l = Long.valueOf(s).longValue(). double d = Double.valueOf(s).doubleValue(). float f = Float.valueOf(s).floatValue(). . 5.
(8) 以下のプログラムは、標準入力から入力されたデータを整数に変換し 、偶数と奇数のど ちらであるかを 判別します。 // InputTest2.java import java.io.*. public class InputTest2 { // フィールド の定義なし InputTest2(){ // コンストラクタの定義 try{ InputStreamReader fr = new InputStreamReader(System.in). BufferedReader br = new BufferedReader(fr). int n. System.out.println("Input Integer: "). String number = br.readLine(). n = Integer.valueOf(number).intValue(). if ((n % 2) == 0) System.out.println(+n+" is even."). else System.out.println(+n+" is odd."). } catch(Exception e) { System.out.println(e). } } // メソッド main() でオブジェクト reader を生成 public static void main(String ] args) { InputTest2 test = new InputTest2(). } }. . プログラムを実行すると 、以下のような実行結果を得られます。 % javac InputTest2.java % java InputTest2 Input Integer: 67 67 is odd.. . . . 11.5 ユーティリティパッケージ ユーティリティパッケージは、汎用に使える便利なクラスを集めたもので、主によく使われるデータ構 造を扱うときに使われます。 このパッケージで用意されているクラスでは 、例えば 配列を操作するメソッド 群が定義されています。 その他にも、以下のようなデータを扱うことができます。 リスト 木 スタック 日付・時刻 ユーティリティパッケージを使うには、以下のように import 文で宣言する必要があります。. 6.
(9) . . import java.util.*. 11.5.1. 配列の操作. Arrays クラスには、配列の要素を並べ替えたり検索するためのメソッドが定義されています。. 例えば 、第 8 回演習の課題 2 は、以下のように Arrays クラスの sort(), binarySearch() メソッドを 使うことで以下のように簡単に記述できます。 // ArraySort.java import java.util.Arrays. public class ArraySort { public static void main(String ] args){ int ] a = {1,6,15,12,7,9,23,2,10,4,20}. Arrays.sort(a). System.out.print(""). for (int i=0 i<a.length i++){ System.out.print(ai]+" "). } System.out.println("]"). . int pos = Arrays.binarySearch(a, 6) //値 6 はインデックス 3 の要素 System.out.print("position of 6 in a] :"+ pos +" or a"+pos+"]=6"). // 配列の中に要素がない場合は戻り値が負の値になる pos = Arrays.binarySearch(a, 40). System.out.print("position of 40 in a] :"+ pos). }. }. プログラムを実行すると 、以下のような結果を得ます。 % javac ArraySort.java % java ArraySort 1 2 4 6 7 9 10 12 15 20 23 ] position of 6 in a] :3 or a3]=6 position of 40 in a] :-12. . その他の Arrays クラスで定義されているメソッド の使用例を以下に示します。 import java.util.Arrays. . . //文字列の配列を並び替える String ] starray = {"now","is","the","time"}. Arrays.sort(starray). //{"is","now","the","time"} // Arrays.fill() は配列の要素を初期化する byte ] data = new byte100] // 空の配列。要素は 0 に設定される Arrays.fill(data, (byte)-1). //全要素を -1 に設定 Arrays.fill(data,5,10,(byte)-2) //5,6,7,8,9 の要素は -2 に設定する. . 7. .
(10) 11.5.2. 日付と時刻. ユーティリティパッケージには、日付と時刻を表すためのクラスが用意されています。java.util.Date ク ラスは、ある特定の時刻を表すことができます。java.util.Calendar クラスは日付を操作します。 これらのクラスを使った例として、MyDate.java を示します。 // MyDate.java import java.util.*. . public class MyDate { public static void main(String ] args){ //Calendar は抽象クラスなので 、直接インスタンスを作成出来ません。 // 現在のローカルとタイムゾーンに対応する Calendar を取得する Calendar cal = Calendar.getInstance(). // 今日が 1 年の何日目がを求める cal.setTime(new Date()). // 現在の日付を設定する int dayOfYear = cal.get(Calendar.DAY_OF_YEAR) // 1 年の何日目か ? int thisYear = cal.get(Calendar.YEAR) // 西暦の年 int thisMonth = cal.get(Calendar.MONTH)+1 //月 (0 ∼ 11 が返ってくるので +1 する int thisDay = cal.get(Calendar.DATE) // 月の何日目 System.out.print("Today is Year:"+thisYear+" Month:"). System.out.println(thisMonth+" Day:"+thisDay). System.out.println("Today is "+ dayOfYear + "Day of Year 2001"). //現在から 30 日後を表す Date オブジェクトを取得 Date today = new Date(). //現在の日付 cal.setTime(today). //Calendar オブジェクトに設定 cal.add(Calendar.DATE, 30). // 30 日を加算する Date expiration = cal.getTime() // 結果の日付を取得する System.out.println("30 days after Today is "+ expiration). //2001 年 10 月の第 2 木曜日は月の何日目かを求める cal.set(Calendar.YEAR, 2001). // 年を設定する cal.set(Calendar.MONTH, Calendar.OCTOBER). // 月を設定する (9 値も良い) cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY) // 曜日を設定する (5 値も良い) cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2) // 週を設定する int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH) //月の何日目かを問い合わせる System.out.println("The 2nd Thursday of October 2001 is "+ dayOfMonth). . . }. }. Calendar は抽象クラスなので、直接インスタンスを作成出来ません。Calendar クラスのインスタンス. を生成するためには getInstance() メソッドを使います。上の例では、cal という Calendar 型の変数に Calendar クラスのインスタンスを生成してから、setTime() メソッド や set() メソッド を使って日付を. 設定したり、get() メソッド を使って保持している日付の情報を読み出しています。 Date クラスを生成するには、年, 月, 日 (さらに必要に応じて時, 分, 秒) を指定します2 。このとき、年. は 1900 年からの経過年数で表すことに注意してください。上の例では、引数を指定せずに Date のコンス トラクタを呼び出します。Date は現在の日付と時刻で初期化されます。. 2 グリニッジ標準時の 1970 年 1 月 1 日の午前 0 時からの経過ミリ秒数を指定する方法もあります. 8.
(11) 演習 11-2 Calendar クラスと Date クラスを利用し 、以下の条件に沿ってそれぞれプログラムを作成せよ。. a) 標準入力から年, 月, 日を入力すると 、その日がその年の 1 月 1 日から数えて何日目であるかを出力す る。 b) 標準入力から年, 月, 日を入力すると、その日の曜日を出力する。. 11.6 ファイルと入出力 ファイルを対象としたデータ入出力を行うためのクラスとして、Reader クラスと Writer クラスが用意 されています。これらのクラスを使うためには、import 文で以下のように宣言する必要があります。. . import java.io.*. . 11.6.1 ファイルからの入力 Java でファイルからのデータ入力を行うには、FileReader と BufferedReader を組み合わせて利用し ます。. . FileReader ファイル変数 = new FileReader(ファイル記述) BufferedReader バッファ変数 = new BufferedReader(ファイル変数). 先に説明した標準入力からのデータ入力と同様に 、readline メソッド を使ってファイルから 1 行ごとに. データを読み込むことができます。 ファイルからデータを読み込む例として、ReadFile.java を示します。 // ReadFile.java import java.io.*. class ReadFile { // フィールド の定義なし ReadFile(String filename){ // コンストラクタの定義 try{ FileReader fr = new FileReader(filename). BufferedReader br = new BufferedReader(fr). String s. while((s=br.readLine())!=null) System.out.println(s). fr.close(). } catch(Exception e) { System.out.println(e). } } // メソッド main() でオブジェクト reader を生成 public static void main(String ] args) { ReadFile reader = new ReadFile(args0]). } }. . ReadFile.java の実行例を示します。 9. . .
(12) ここでは、先に入力した InputTest.java をプログラムに読み込み、そのまま標準出力へ書き出しています。 読み込みが終わったファイルは、FileReader クラスの close メソッドを使って閉じている点に注意してく ださい。 $ javac ReadFile.java $ java ReadFile InputTest.java // InputTest.java import java.io.*. public class InputTest { public static void main(String ] args) { int c = 0. System.out.println("Input: "). try{ while (c != '\n'){ c = System.in.read(). System.out.println("output: " + (char)c). } } catch (Exception e) { System.err.println(e). } } }. . . . 11.6.2 データ出力 Java でファイルへのデータ出力を行うには 、FileWriter, BufferedWriter, PrintWriter の三つの クラスを組み合わせて利用します。 FileWriter ファイル変数 = new FileWriter(ファイル記述). . BufferedWriter バッファ変数 = new BufferedWriter(ファイル変数) PrintWriter 出力変数 = new PrintWriter(バッファ変数). . ファイルへデータを書き出す場合、FileWriter のコンストラクタへはファイル名を引数として与えます。 以下に、ファイルへのデータ出力を行う例として WriteFile.java を示します。. 10.
(13) . // WriteFile.java import java.io.*. class WriteFile { // フィールド の定義なし WriteFile(String filename){ // コンストラクタの定義 try{ FileWriter f = new FileWriter(filename). BufferedWriter bw = new BufferedWriter(f). PrintWriter pw = new PrintWriter(bw). pw.println("Hello,"). pw.println("This is my first file in Java."). pw.println("Bye!"). pw.flush(). f.close(). } catch(Exception e) { System.out.println(e). } } // メソッド main() でオブジェクト reader を生成 public static void main(String ] args) { WriteFile writer = new WriteFile("test"). } }. . . このプログラムでは、FileWriter, BufferedWriter, PrintWriter の各クラスのインスタンスを生成 し 、利用しています。ファイルへのデータの書き出しは、System.out と同様に println メソッドを使っ ています。すべての書き出しが終わった後に flush メソッド を使っている点に注意してください。また、 ファイルの読み込みと同様に、最後に PrintWriter クラスの close メソッドを使って閉じています。. WriteFile.java の実行例を示します。 $ javac WriteFile.java $ java WriteFile $ cat test Hello, This is my first file in Java. Bye!. . . 演習 11-3. 円柱の体積と面積を計算し 、結果を表示するために 、以下の機能を持つ Cylinder クラスと Output ク ラスを作成せよ。 以下の仕様を持つ Cylinder クラスを設計する。 円柱の底面の半径 radius と円柱の高さ height を実数型の private フィールド として持つ。 引数のないコンストラクタを持ち、ここでは radius = 0 height = 0 で初期化する。 r. と h を引数とするコンストラクタを持ち、ここではそれぞれの値で radius と height を初期化する。. 円柱の面積を計算し 、その値 (float 型) を返すメソッド area を持つ。. 11.
(14) 円柱の体積を計算し 、その値 (float 型) を返すメソッド volume を持つ。 以下の仕様を持つ Output クラスを設計する。 クラスフィールドとして Cylinder 型 mycylinder と、Cylinder 型の 2 次元配列 cylArray を持つ。 計算結果を出力するメソッド void printresult を持つ。計算結果は以下のように表示する。 オブジェクト名, r = 値, h = 値, 面積 = 値, 体積 = 値 計算の結果をファイルに出力する void 型メソッド printfile を実装する。ファイル名は result と する。出力データは 2 次元の表とする。出力の形は次のようにする。 面積: h=. 1. 2. 3. 4. 5. r= 1. 値 値 値 値 値 値. 2. 値 値 値 値 値 値. 3. 値 値 値 値 値 値. 4. 値 値 値 値 値 値. 5. 値 値 値 値 値 値. 6. 値 値 値 値 値 値. 6. 体積: h=. 1. 2. 3. 4. 5. r= 1. 値 値 値 値 値 値. 2. 値 値 値 値 値 値. 3. 値 値 値 値 値 値. 4. 値 値 値 値 値 値. 5. 値 値 値 値 値 値. 6. 値 値 値 値 値 値. 6. main() メソッド を実装する。main() では半径 10, 高さ 20 の Cylinder クラスのイン スタン ス mycylinder を生成する、printresult() メソッドを呼び出して標準出力に計算の結果を出力する。. また、cylArray に半径と高さをそれぞれ 1 から 6 まで変化させた Cylinder クラスのインスタンス を生成して格納し 、その後 printfile() メソッド を呼出してファイルに結果を出力する。. 12.
(15) 11.7. 課題. 必須課題については必ずレポートを提出してください。自由課題にもぜひ挑戦してみましょう。. 2 必須課題 1. 以下の仕様を満たす Function クラスを作成せよ。 4 つの実数値を返すクラスメソッド f(double x), g(double x), h(double x), r(int k) を 実装する。f g h r は以下の定義に従った演算結果を返す。 2 a) 関数 f (x) = 1 ; e;2x b) 関数 g (x) = 13 x3 ; 4x2 + 15x + 3 p 2 2 2 c) 関数 h(x) = ( arcsin x + x 1 ; x 1 ∼ k までの乱数を発生 (k > 0) d) 関数 r(k ) = 発生した乱数以上の最小整数値を返す main() メソッドでは作成したクラスメソッド を利用し 、以下の計算を行った結果を出力する。. { f (;0:3) f (0:7) { g (x)(x = 1 2 ::: 12) { h(; 8 ) h( 4 ) { r(99) 2. Calendar クラスと Date クラスを利用し 、以下の条件に沿ってそれぞれプログラムを作成せよ。 a) 標準入力から年, 月, 日を入力すると、その日がその年の 1 月 1 日から数えて何日目であるかを出 力する。 b) 標準入力から年, 月, 日を入力すると 、その日の曜日を出力する。 3. 円柱の体積と面積を計算し 、結果を表示するために、以下の機能を持つ Cylinder クラスと Output ク ラスを作成せよ。 以下の仕様を持つ Cylinder クラスを設計する。 円柱の底面の半径 radius と円柱の高さ height を実数型の private フィールド として持つ。 引数のないコンストラクタを持ち、ここでは radius = 0 height = 0 で初期化する。 r. と h を引数とするコンストラクタを持ち、ここではそれぞれの値で radius と height を初期化. する。 円柱の面積を計算し 、その値 (float 型) を返すメソッド area を持つ。 円柱の体積を計算し 、その値 (float 型) を返すメソッド volume を持つ。 以下の仕様を持つ Output クラスを設計する。 クラスフィールド として Cylinder 型 mycylinder と 、Cylinder 型の 2 次元配列 cylArray を 持つ。 計算結果を出力するメソッド void printresult を持つ。計算結果は以下のように表示する。 オブジェクト名, r = 値, h = 値, 面積 = 値, 体積 = 値 計算の結果をファイルに出力する void 型メソッド printfile を実装する。ファイル名は result とする。出力データは 2 次元の表とする。出力の形は次のようにする。 面積: h=. 1. 2. 3. 4. 5. 6. 13.
(16) r= 1. 値 値 値 値 値 値. 2. 値 値 値 値 値 値. 3. 値 値 値 値 値 値. 4. 値 値 値 値 値 値. 5. 値 値 値 値 値 値. 6. 値 値 値 値 値 値. 体積: h=. 1. 2. 3. 4. 5. r= 1. 値 値 値 値 値 値. 2. 値 値 値 値 値 値. 3. 値 値 値 値 値 値. 4. 値 値 値 値 値 値. 5. 値 値 値 値 値 値. 6. 値 値 値 値 値 値. 6. main() メソッド を実装する。main() では半径 10, 高さ 20 の Cylinder クラスのインスタン ス mycylinder を生成する、printresult() メソッド を呼び出して標準出力に計算の結果を出力す. る。また、cylArray に半径と高さをそれぞれ 1 から 6 まで変化させた Cylinder クラスのインス タンスを生成して格納し 、その後 printfile() メソッドを呼出してファイルに結果を出力する。. 2 自由課題 1. java.util.LinkedList について調べよ。そのライブラリを用いて第 8 回の自由課題 3 のプログラム を作成せよ。 2. java.applet パッケージについて調べ、どのようなクラスライブラリかをまとめよ。 3. java.net パッケージの中の 2 つのクラスを挙げ、それぞれのクラスの使用方法をまとめよ。. 参考文献 1) 「 Java クイックリファレンス 第 3 版 (Java 2 SDK 1.2) 」, オライリ・ジャパン David Flanagan 著, イ デア コラボレーションズ株式会社 訳. 2) 「 Java2 オブジェクト指向プログラミング技法」, 共立出版株式会社, 赤間 世紀 著 3) 「 JavaWorld 2001 年 6 月号」, IDG ジャパン. 14.
(17)
関連したドキュメント
実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる
AUTO : 出力先機器の EDID に従います。. DVI :
DVI-D シングルリンク信号エクステンダー DVIDEX-UTPPSV は、安価な CAT5e 以上の UTP LAN ケ ーブルを使用して、DVI-D
次に、第 2 部は、スキーマ療法による認知の修正を目指したプログラムとな
このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう
子どもたちは、全5回のプログラムで学習したこと を思い出しながら、 「昔の人は霧ヶ峰に何をしにきてい
本プログラム受講生が新しい価値観を持つことができ、自身の今後進むべき道の一助になることを心から願って
プログラムの内容としては、①各センターからの報 告・組織のあり方 ②被害者支援の原点を考える ③事例 を通して ④最近の法律等 ⑤関係機関との連携