php多分支结构问题,if处理多分支结构实例介绍及过长的if语句的缺点

实例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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值