例 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 サイトの他の関連記事を参照してください。