REPORT#3

3種類以上の体積を求めるクラスを作成し、具体的な値を入力しプログラムを実行せよ

import java.io.*;

class j02 {
        public static void main(String args[]){

                BufferedReader br = new BufferedReader(
                                        new InputStreamReader(System.in));
            String rdLine,rd2Line;
                double height = 0;
                double radius = 0;
                double side = 0;
                double vol = 0;
            try{
                        System.out.println("どの体積の計算を行うか選んでください");
                        System.out.print("1、円錐の体積,");
                        System.out.print("2、四角柱の体積,");
                        System.out.println("3、球の体積,");
                        System.out.print("番号を入力してください=>");

                        rdLine = br.readLine();
                        int cheakNum = Integer.parseInt(rdLine);

                switch (cheakNum) {
                                case 1:
                            System.out.print("円の半径を入力してください=>");
                                radius = (new Double(br.readLine())).doubleValu\e();

                                System.out.print("円錐の高さを入力してください=\>");
                                height = (new Double(br.readLine())).doubleValu\e();

                                        Volume volume = new Volume(radius, heig\ht, side);
                            vol = volume.cone();

                                        System.out.println();
                                    System.out.println("この円錐の体積は『"+vol\+"』です。");
                                break;

                                case 2:
                            System.out.print("底辺の横の長さを入力してください=\>");
                                radius = (new Double(br.readLine())).doubleValu\e();

                                System.out.print("底面の縦の長さを入力してくだ\\さい=>");
                                height = (new Double(br.readLine())).doubleValu\e();

                                System.out.print("四角柱の高さを入力してくださ\\い=>");
                                side = (new Double(br.readLine())).doubleValue(\);

                                        volume = new Volume(radius, height, sid\e);
                            vol = volume.pillar();

                                        System.out.println();
                                    System.out.println("この円錐の体積は『"+vol\+"』です。");
                        break;

                                case 3:
                                    System.out.print("球の半径を入力してださい=\>");
                                radius = (new Double(br.readLine())).doubleValu\e();

                                        volume = new Volume(radius, height, sid\e);
                            vol = volume.boll();

                                        System.out.println();
                                    System.out.println("この球の体積は『"+vol+"\』です。");

class Volume{
        double radius,height, side;
        final static double pai = 3.14;

        Volume(double radius, double height, double side){
                this.radius = radius;
                this.height = height;
                this.side = side;
        }

        public double cone(){
                return(radius * radius * pai * height * 1/3);
        }

        public double pillar(){
                return(radius * side * height);
        }

        public double boll(){
                return(4/3 * pai * radius * radius * radius);
        }
}


実行結果
どの体積の計算を行うか選んでください
1、円錐の体積,2、四角柱の体積,3、球の体積,
番号を入力してください=>1
円の半径を入力してください=>3
円錐の高さを入力してください=>3
この円錐の体積は『28.26』です。

2種以上の表面積を求めるクラスを作成し、同様に実行せよ

import java.io.*;

class j03 {
        public static void main(String args[]){

                BufferedReader br = new BufferedReader(
                                        new InputStreamReader(System.in));
            String rdLine,rd2Line;
                double line = 0;
                double radius = 0;
                double side = 0;
                double are = 0;
            try{
                        System.out.println("どのタイプの表面積の計算を行いますか?");
                        System.out.print("(1)円錐の表面積,");
                        System.out.print("(2)四角柱の表面積,");
                        System.out.println("(3)球の表面積");
                        System.out.print("番号を入力してください=>");

                        rdLine = br.readLine();
                        int cheakNum = Integer.parseInt(rdLine);

                switch (cheakNum) {
                                case 1:
                            System.out.print("底辺の円の半径を入力してください=>");
                                radius = (new Double(br.readLine())).doubleValue();

                                System.out.print("母線の長さを入力してください=>");
                                line = (new Double(br.readLine())).doubleValue(\);

                                        Area area = new Area(radius, line, side\);
                            are = area.cone();

                                        System.out.println();
                                    System.out.println("この円錐の表面積は『"+a\re+"』です。");
                                break;

                                case 2:
                                System.out.print("底面の円の半径を入力してください=>");
                                radius = (new Double(br.readLine())).doubleValu\e();

                                System.out.print("円柱の高さを入力してください=>");
                                line = (new Double(br.readLine())).doubleValue(\);

                                        area = new Area(radius, line, side);
                            are = area.pillar();

                                        System.out.println();
                                    System.out.println("この円柱の表面積は『"+a\re+"』です。");
                        break;

                                case 3:
                                    System.out.print("球の半径を入力してださい=>");
                                radius = (new Double(br.readLine())).doubleValu\e();

                                        area = new Area(radius, line, side);
                            are = area.boll();

                                        System.out.println();
                                    System.out.println("この球の表面積は『"+are\+"』です。");
                            break;
                                default:
                                    System.out.println("入力値が正しくありませ\\ん。正しい入力値を入力してください。");
                }

            }catch(Exception e){
                    System.out.println("IOExceptionエラー発生");
                }
        }
}

class Area{
        double radius,line, side;
        final static double pai = 3.14;

        Area(double radius, double line, double side){
                this.radius = radius;
                this.line = line;
                this.side = side;
        }

        public double cone(){
                double angle = 360 * ((radius*2) / (line*2));
                return((radius * radius * pai) + (line * line * pai * (angle/36\0)));
        }

        public double pillar(){
                double yen = radius * radius * pai * 2;
                return((line * radius * 2 * pai) + yen);
        }

        public double boll(){
                return(4 * pai * radius * radius);
        }
}

実行結果

どのタイプの表面積の計算を行いますか?
(1)円錐の表面積,(2)四角柱の表面積,(3)球の表面積
番号を入力してください=>3
球の半径を入力してださい=>3
この球の表面積は『113.04』です。

例題を参考に、階乗計算を再帰プログラムにより作成し、for文による階乗計算との違いを考察せよ

import java.io.*;

class j04{
        public static void main(String args[]) throws Exception{
                BufferedReader in = new BufferedReader(
                                        new InputStreamReader(System.in));

        System.out.print("input natural numeber:");
                int num = (new Integer(in.readLine())).intValue();

                System.out.print("for文を使った階乗計算 ==>");
                for (int i = 1; i <= number; i++){
                        factrial = i * factrial;
                }

                return(factrial);
        }

        static int factrec(int number){
                if (number == 0)
                    return(1);

                return(number * factrec(number -1));
        }

}

実行結果

[nw0611:~] j06011% javac j04.java
[nw0611:~] j06011% java j04
input natural numeber:10
v: ==>10 ! =3628800
v:  ==>10 ! =3628800

感想