体積・表面積公式クラスの作成{〜12/11(Mon)}
(1)3種以上の体積を求めるクラスを作成し、具体的な値を入力しプログラムを実行せよ。
(2)2種以上の表面積を求めるクラスを作成し、同様に実行せよ。
(3)例題を参考に、階乗計算を再帰プログラムにより作成し、for文による階乗計算との違いを考察せよ。
ソースコード
1 | class Taiseki2 { | |
2 | double tyokuhoutai (double w,double h,double l) { | 直方体の体積を求める |
3 | return(w*h*l); | |
4 | } | |
5 | ||
6 | double entyu (double r,double h) { | 円柱の体積を求める |
7 | return(r*r*Math.PI*h); | |
8 | } | |
9 | ||
10 | double en (double r) { | 円の体積を求める |
11 | return(4/3*Math.PI*r*r*r); | |
12 | } | |
13 | } | |
14 | ||
15 | class Taiseki { | |
16 | public static void main(String args[]){ | |
17 | double w,h,l,r,tyoku,ent,en; | |
18 | l = 8; | 縦の長さを8に |
19 | w = 5; | 横の長さ5に |
20 | h = 10; | 高さを10に |
21 | r = 9; | 半径を9に |
22 | Taiseki2 v = new Taiseki2(); | |
23 | tyoku = v.tyokuhoutai(w,h,l); | |
24 | ent = v.entyu(r,h); | |
25 | en = v.en(r); | |
26 | System.out.println("縦の長さ = " + l ); | |
27 | System.out.println("横の長さ =" + w ); | |
28 | System.out.println("高さ =" + h); | |
29 | System.out.println("直方体の体積 =" + tyoku ); | |
30 | System.out.println("半径 =" + r ); | |
31 | System.out.println("高さ =" + h); | |
32 | System.out.println("円柱の体積 =" + ent ); | |
33 | System.out.println("半径 =" + r); | |
34 | System.out.println("円の体積 =" + en); | |
35 | } | |
36 | } |
実行結果
1 | [nw0603:~] j06003% javac Taiseki.java |
2 | [nw0603:~] j06003% java Taiseki |
3 | 縦の長さ = 8.0 |
4 | 横の長さ =5.0 |
5 | 高さ =10.0 |
6 | 直方体の体積 =400.0 |
7 | 半径 =9.0 |
8 | 高さ =10.0 |
9 | 円柱の体積 =2544.690049407732 |
10 | 半径 =9.0 |
11 | 円の体積 =2290.221044466959 |
ソースコード
1 | class Menseki2 { | |
2 | double entyu(double r,double h){ | 円柱の表面積を求める |
3 | return(r*r*Math.PI+2*Math.PI*r*h); | |
4 | } | |
5 | ||
6 | double en(double r) { | 円の表面積を求める |
7 | return(4*Math.PI*r*r); | |
8 | } | |
9 | } | |
10 | ||
11 | class Menseki { | |
12 | public static void main(String args[]) { | |
13 | double r,h,ent,en; | |
14 | h = 10; | 高さを10に |
15 | r = 9; | 半径を9に |
16 | Menseki2 m = new Menseki2(); | |
17 | ent = m.entyu(r,h); | |
18 | en = m.en(r); | |
19 | System.out.println("高さ =" + h ); | |
20 | System.out.println("半径 =" + r ); | |
21 | System.out.println("円柱の表面積 =" + ent ); | |
22 | System.out.println("半径 =" + r ); | |
23 | System.out.println("円の表面積 =" + en ); | |
24 | } | |
25 | } |
実行結果
1 | [nw0603:~] j06003% javac Menseki.java |
2 | [nw0603:~] j06003% java Menseki |
3 | 高さ =10.0 |
4 | 半径 =9.0 |
5 | 円柱の表面積 =819.9556825869361 |
6 | 半径 =9.0 |
7 | 円の表面積 =1017.8760197630929 |
ソースコード
1 | import java.io.*; |
2 | class factrial { |
3 | |
4 | public static void main(String args[]) throws Exception { |
5 | BufferedReader in = new BufferedReader(new InputStreamReader(System.in)\); |
6 | |
7 | System.out.print("input natural number: "); |
8 | int num = (new Integer(in.readLine())).intValue(); |
9 | |
10 | System.out.print("for文を使った階乗計算 => "); |
11 | System.out.println(num + "! =" + factfor(num)); |
12 | |
13 | System.out.print("再帰呼び出しによる階乗計算 => "); |
14 | System.out.println(num + "! =" + factrec(num)); |
15 | } |
16 | /* for 文を使った階乗の計算 */ |
17 | static int factfor(int number) { |
18 | |
19 | int factrial = 1; |
20 | |
21 | for (int i = 1; i <= number; i++) { |
22 | factrial = i * factrial; |
23 | } |
24 | return(factrial); |
25 | } |
26 | /* 再帰による階乗の計算 */ |
27 | static int factrec(int number) { |
28 | if ( number == 0) return(1); |
29 | return( number*factrec(number-1)); |
30 | } |
31 | } |
実行結果
1 | [nw0603:~] j06003% java factrial |
2 | input natural number: 4 |
3 | for文を使った階乗計算 => 4! =24 |
4 | 再帰呼び出しによる階乗計算 => 4! =24 |