>  기사  >  Java  >  다중 분기 구조 예제를 처리하는 if 소개 및 너무 긴 if 문의 단점

다중 분기 구조 예제를 처리하는 if 소개 및 너무 긴 if 문의 단점

巴扎黑
巴扎黑원래의
2017-07-18 15:17:053450검색

예제 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.