Rumah  >  Artikel  >  Java  >  if处理多分支结构实例介绍及过长的if语句的缺点

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

巴扎黑
巴扎黑asal
2017-07-18 15:17:053450semak imbas

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


Atas ialah kandungan terperinci if处理多分支结构实例介绍及过长的if语句的缺点. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn