ホームページ > Java > &#&チュートリアル > if 処理のマルチブランチ構造の例と長すぎる if ステートメントの欠点の紹介

if 処理のマルチブランチ構造の例と長すぎる if ステートメントの欠点の紹介

巴扎黑
リリース: 2017-07-18 15:17:05
オリジナル
3472 人が閲覧しました

例 1

import java.util.Scanner;/**
 * Created by liwenj on 2017/7/17. */public class test7 {public static void main(String[] args) {
        Scanner input=new Scanner(System.in);int money=input.nextInt();if(money>500){
            System.out.println("我要买一个凯迪拉克");
        }else if(money>100){
            System.out.println("我要买一个帕萨特");
        }else if(money>50){
            System.out.println("我要买一个伊兰特");
        }else if(money>10){
            System.out.println("我要买一个奥拓");
        }else{
            System.out.println("我要买一个拖拉机");
        }
    }
}
ログイン後にコピー

例 2

import java.util.Scanner;/**
 * Created by liwenj on 2017/7/17. */public class test8 {public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入是否是会员");
        String huiyuan = input.next();boolean f = huiyuan.equals("yes");
        System.out.println("请输入消费金额");double money = input.nextDouble();if (f) {if (money >= 200) {double dazhe = money * 0.75;
                System.out.println("你消费:" + dazhe);
            } else {double dazhe = money * 0.8;
                System.out.println("你消费:" + dazhe);
            }

        } else if (money >= 100) {double dazhe = money * 0.9;
            System.out.println("你消费:" + dazhe);
        }else{
            System.out.println("你消费:"+money);
        }

    }

}
ログイン後にコピー

過度に長いマルチブランチ構造は、OCP 原則 (新規追加時、オープンおよびクローズの原則) に違反するため、ソフトウェアでは悪い構造とみなされます。条件判定処理を行うには、if-else分岐を追加する必要があります。

多くの場合、関数テーブル構造を使用することは、過度に長い分岐構造を回避する効果的な方法です。以下は、関数テーブル構造を使用して置き換える「オオカミ、羊、野菜が川を渡る」問題の解決アルゴリズムです。過度に長いマルチブランチ構造の例。ファーマーは合計 8 つのアクションを実行でき、それぞれのアクションが状態遷移処理プロセスに対応します。 if-else 多分岐構造を使用すると、状態遷移を処理するコードが非常に長くなります。分岐ジャンプ コードが長すぎるのを避けるために、アルゴリズムは関数テーブル構造を使用します。まず関数テーブル項目の定義を宣言します:

print?
typedef bool (*ProcessFuncPtr)(const ItemState& current, ItemState& next);  
struct ActionProcess{  
    Action act;  
    ProcessNextFuncPtr processFunc;  
}
ログイン後にコピー


以上がif 処理のマルチブランチ構造の例と長すぎる if ステートメントの欠点の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート