プログラミング初心者の奮闘記

プログラミング初心者の成長と過程。

メソッド1

ポイント

  • メソッドの使い方を理解しているか

  • 戻り値の使い方を理解しているか

  • プログラムは簡潔で分かりやすいか

問題

java-musashiurawa.hatenablog.com

解答1と正解

import java.util.Scanner;

public class method1 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        Scanner scan = new Scanner(System.in);
        int deliveryFee;
        String from = "東京都";
        String to;      // 任意の都道府県を指定
        int size;      // 任意のサイズを指定

        System.out.print("お届け先を入力してください:");
        to = scan.nextLine();
        System.out.print("荷物のサイズを入力してください:");
        size = scan.nextInt();

        deliveryFee = getDeliveryFee(from,to,size);
        if(deliveryFee == 0) {
            System.out.println("入力内容に誤りがあります。");
        }else {
            System.out.println("郵送料:" + deliveryFee + "円");
        }

    }


    private static int getDeliveryFee_tokyo(String from,String to,int size) {
        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {810,1030,1280,1530,1780,2010,2340};

        for(int i = 0; i < delivery_size.length; i++)
            if(to.equals(from) &&  size == delivery_size[i]) {
                return fee[i];
            }
        return 0;
    }

    private static int getDeliveryFee_hokkaidou(String from,String to,int size) {

        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {1300,1530,1760,2020,2260,2490,2850};

        for(int i = 0; i < delivery_size.length; i++)
            if(to.equals("北海道") &&  size == delivery_size[i]) {
                return fee[i];
            }
        return 0;
    }



    private static int getDeliveryFee_t_k_s_h_t(String from,String to,int size) {

        String t_k_s_h_t[] = {"青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県",
                                "群馬県","埼玉県","千葉県","神奈川県","山梨県","新潟県","長野県","富山県",
                                "石川県","福井県","静岡県","愛知県","岐阜県","三重県"};

        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {870,1100,1330,1590,1830,2060,2410};

        for(int i = 0; i < t_k_s_h_t.length; i++) {
            for(int j = 0; j < delivery_size.length; j++) {
                if(to.equals( t_k_s_h_t[i]) &&  size == delivery_size[j]) {
                    return fee[j];
                }
            }
        }
        return 0;
    }

    private static int getDeliveryFee_kinki(String from,String to,int size) {

        String kinki[] = {"奈良県","滋賀県","京都府","大阪府","兵庫県","和歌山県"};

        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {970,1200,1440,1690,1950,2160,2530};

        for(int i = 0; i < kinki.length; i++) {
            for(int j = 0; j < delivery_size.length; j++) {
                if(to.equals( kinki[i]) &&  size == delivery_size[j]) {
                    return fee[j];
                }
            }
        }
        return 0;
    }

    private static int getDeliveryFee_t_s(String from,String to,int size) {

        String t_s[] = {"岡山県","広島県","鳥取県","島根県","山口県","徳島県","香川県","愛媛県","高知県"};

        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {1100,1310,1560,1800,2060,2270,2640};

        for(int i = 0; i < t_s.length; i++) {
            for(int j = 0; j < delivery_size.length; j++) {
                if(to.equals(t_s[i]) && size == delivery_size[j]) {
                    return fee[j];
                }
            }
        }
        return 0;
    }

    private static int getDeliveryFee_kyuusyuu(String from,String to,int size) {

        String kyuusyuu[] = {"福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県"};

        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {1300,1530,1760,2020,2260,2490,2850};

        for(int i = 0; i < kyuusyuu.length; i++) {
            for(int j = 0; j < delivery_size.length; j++) {
                if(to.equals(kyuusyuu[i]) && size == delivery_size[j]) {
                    return fee[j];
                }
            }
        }
        return 0;
    }

    private static int getDeliveryFee_okinawa(String from,String to,int size) {


        int delivery_size[] = {60,80,100,120,140,160,170};

        int fee[] = {1350,1630,1900,2170,2440,2660,3060};

        for(int i = 0; i < delivery_size.length; i++) {
            if(to.equals("沖縄県") && size == delivery_size[i]) {
                return fee[i];
            }
        }
        return 0;

    }

    private static int getDeliveryFee(String from,String to,int size) {
                int Fee;
            Fee = getDeliveryFee_tokyo(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_hokkaidou(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_t_k_s_h_t(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_kinki(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_t_s(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_kyuusyuu(from,to,size);
            if(Fee != 0) {
                return Fee;
            }
            Fee = getDeliveryFee_okinawa(from,to,size);
                return Fee;

    }
}

解答2と正解

import java.util.Scanner;

public class method1 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        Scanner scan = new Scanner(System.in);
        int deliveryFee;
        String from = "東京都";
        String to;      // 任意の都道府県を指定
        int size;      // 任意のサイズを指定

        System.out.print("お届け先を入力してください:");
        to = scan.nextLine();
        System.out.print("荷物のサイズを入力してください:");
        size = scan.nextInt();

        deliveryFee = getDeliveryFee(from,to,size);
        if(deliveryFee == 0) {
            System.out.println("入力内容に誤りがあります。");
        }else {
            System.out.println("郵送料:" + deliveryFee + "円");
        }

    }

private static int getDeliveryFee(String from,String to,int size) {

        String Todoufukenn[][] = {
                {"東京都"},
                {"北海道"},
                {"青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県",
                "群馬県","埼玉県","千葉県","神奈川県","山梨県","新潟県","長野県","富山県",
                "石川県","福井県","静岡県","愛知県","岐阜県","三重県"},
                {"奈良県","滋賀県","京都府","大阪府","兵庫県","和歌山県"},
                {"岡山県","広島県","鳥取県","島根県","山口県","徳島県","香川県","愛媛県","高知県"},
                {"福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県"},
                {"沖縄県"}
        };

        int num = 7;
        for(int i = 0; i < Todoufukenn.length; i++) {
            for(int j = 0; j < Todoufukenn[i].length; j++) {
                if(to.equals(Todoufukenn[i][j])) {
                    num = i;
                    break;
                }
            }
        }


        switch(num) {
            case 0:
                int fee_tokyo[] = {810,1030,1280,1530,1780,2010,2340};
        
                int delivery_size_tokyo[] = {60,80,100,120,140,160,170};
        
                for(int k = 0; k < delivery_size_tokyo.length; k++) {
                    if(size == delivery_size_tokyo[k]) {
                        return fee_tokyo[k];
                    }
                }
            case 1:
            case 5:
                 int fee_hokkaidou_kyuusyuu[] = {1300,1530,1760,2020,2260,2490,2850};
        
                 int delivery_size_hokkaidou_kyuusyuu[] = {60,80,100,120,140,160,170};
        
                    for(int k = 0; k < delivery_size_hokkaidou_kyuusyuu.length; k++) {
                        if(size == delivery_size_hokkaidou_kyuusyuu[k]) {
                            return fee_hokkaidou_kyuusyuu[k];
                        }
                    }
            case 2:
                int fee_t_k_s_h_t[] = {870,1100,1330,1590,1830,2060,2410};
        
                int delivery_size_t_k_s_h_t[] = {60,80,100,120,140,160,170};
        
                for(int k = 0; k < delivery_size_t_k_s_h_t.length; k++) {
                    if(size == delivery_size_t_k_s_h_t[k]) {
                        return fee_t_k_s_h_t[k];
                    }
                }
            case 3:
                int fee_kinki[] = {970,1200,1440,1690,1950,2160,2530};
        
                int delivery_size_kinki[] = {60,80,100,120,140,160,170};
        
                for(int k = 0; k < delivery_size_kinki.length; k++) {
                    if(size == delivery_size_kinki[k]) {
                        return fee_kinki[k];
                    }
                }
            case 4:
                int fee_tyuugoku_sikoku[] = {1100,1310,1560,1800,2060,2270,2640};
        
                int delivery_size_tyuugoku_sikoku[] = {60,80,100,120,140,160,170};
        
                for(int k = 0; k < delivery_size_tyuugoku_sikoku.length; k++) {
                    if(size == delivery_size_tyuugoku_sikoku[k]) {
                        return fee_tyuugoku_sikoku[k];
                    }
                }
            case 6:
                int fee_okinawa[] = {1350,1630,1900,2170,2440,2660,3060};
        
                int delivery_size_okinawa[] = {60,80,100,120,140,160,170};
        
                for(int k = 0; k < delivery_size_okinawa.length; k++) {
                    if(size == delivery_size_okinawa[k]) {
                        return fee_okinawa[k];
                    }
                }
         default:
                return 0;
        }
    }
}

解答3と正解

import java.util.Scanner;

public class method1 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        Scanner scan = new Scanner(System.in);
        int deliveryFee;
        String from = "東京都";
        String to;      // 任意の都道府県を指定
        int size;      // 任意のサイズを指定

        System.out.print("お届け先を入力してください:");
        to = scan.nextLine();
        System.out.print("荷物のサイズを入力してください:");
        size = scan.nextInt();

        deliveryFee = getDeliveryFee(from,to,size);
        if(deliveryFee == 0) {
            System.out.println("入力内容に誤りがあります。");
        }else {
            System.out.println("郵送料:" + deliveryFee + "円");
        }

    }
    private static int getDeliveryFee(String from,String to,int size) {
        String Todoufukenn[][] = {
                {"東京都"},
                {"北海道"},
                {"青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県",
                "群馬県","埼玉県","千葉県","神奈川県","山梨県","新潟県","長野県","富山県",
                "石川県","福井県","静岡県","愛知県","岐阜県","三重県"},
                {"奈良県","滋賀県","京都府","大阪府","兵庫県","和歌山県"},
                {"岡山県","広島県","鳥取県","島根県","山口県","徳島県","香川県","愛媛県","高知県"},
                {"福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県"},
                {"沖縄県"}
                };
        // お届け先のグループ分け
        int num = 7;
        for(int i = 0; i < Todoufukenn.length; i++) {
            for(int j = 0; j < Todoufukenn[i].length; j++) {
                if(to.equals(Todoufukenn[i][j])) {
                    num = i;
                    break;
                }
            }
        }

        switch(num) {
            case 0:
                return fee_tokyo(size);
            case 1:
            case 5:
                return fee_hokkaidou_kyuusyuu(size);
            case 2:
                return fee_fee_t_k_s_h_t(size);
            case 3:
                return fee_kinki(size);
            case 4:
                return fee_tyuugoku_sikoku(size);
            case 6:
                return fee_okinawa(size);
         default:
                return 0;

        }
    }

    private static int fee_tokyo(int size) {

        switch(size) {
            case 60:
                return 810;
            case 80:
                return 1030;
            case 100:
                return 1280;
            case 120:
                return 1530;
            case 140:
                return 1780;
            case 160:
                return 2010;
            case 170:
                return 2340;
         default:
                return 0;
        }
    }

    private static int fee_hokkaidou_kyuusyuu(int size) {

        switch(size) {
        case 60:
            return 1300;
        case 80:
            return 1530;
        case 100:
            return 1760;
        case 120:
            return 2020;
        case 140:
            return 2260;
        case 160:
            return 2490;
        case 170:
            return 2850;
     default:
            return 0;
        }
    }

    private static int fee_fee_t_k_s_h_t(int size) {

        switch(size) {
        case 60:
            return 870;
        case 80:
            return 1100;
        case 100:
            return 1330;
        case 120:
            return 1590;
        case 140:
            return 1830;
        case 160:
            return 2060;
        case 170:
            return 2410;
     default:
            return 0;
        }
    }


    private static int fee_kinki(int size) {

        switch(size) {
        case 60:
            return 970;
        case 80:
            return 1200;
        case 100:
            return 1440;
        case 120:
            return 1690;
        case 140:
            return 1950;
        case 160:
            return 2160;
        case 170:
            return 2530;
     default:
            return 0;
        }
    }

    private static int fee_tyuugoku_sikoku(int size) {

        switch(size) {
        case 60:
            return 1100;
        case 80:
            return 1310;
        case 100:
            return 1560;
        case 120:
            return 1800;
        case 140:
            return 2060;
        case 160:
            return 2270;
        case 170:
            return 2640;
     default:
            return 0;
        }
    }

    private static int fee_okinawa(int size) {

        switch(size) {
        case 60:
            return 1350;
        case 80:
            return 1630;
        case 100:
            return 1900;
        case 120:
            return 2170;
        case 140:
            return 2440;
        case 160:
            return 2660;
        case 170:
            return 3060;
     default:
            return 0;
        }
    }
}