2012-05-14 2 views
0

내가 파일에 내 표정을 자바 다음
동적 조건문을 만들 수 있습니다하려면,이 표현의 수백 그리고 그들은 내 수업에 하드 코딩되어동적 조건문

0001|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 74)) 
0002|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 59) && ((condition4 == 3) || (condition5 > 30))) 

이 표현 변경에 보관하십시오.

if(condition1==100 && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3))){ 

if(condition3>74){ 
return "0001" 
} 
if(condition3>59 && ((condition4 == 3) || (condition5 > 30))){ 
return "0002" 
} 

} 

은 내가 == 2 처음에는 조건 1 == ((조건 2 == 1) || (조건 2에 대한 다음 100
있는 모든 표현을 확인해야

같은 동적 조건문을 만들려면) || 후 최종 상태에 따라 값을 반환
(조건 2의 == 3))

가 BFS

먼저 DFS와 같은 캔 몸체 일부가 수 처음 깊이를 확인한 다음 Java에서 처음으로 브레스트 우선을 확인하는 방법을 알려주십시오.

+0

조금 명확하게 표현하십시오. 어떤 프로그래밍 콘테스트에서 곧바로 질문에 대한 답을 원하는 것처럼 보입니다. –

+0

입력 변수를 단일 구조로 입력해야합니다. 배열 또는 사전을 작성한 다음 해당 데이터 구조를 사용하여 코드가 아닌 데이터로 조건을 표현할 수 있습니다. –

답변

1

사례 : 매우 많은 조건을 정의하고 연속적으로 변경하려고합니다. 동적 표현을 변경하고 새로운 조건을 정의 할 수있는 솔루션이 필요합니다.

는 귀하의 케이스로 동적 상황에 대한 두 가지 솔루션이 있습니다 Rule Engine를 사용

  1. . 이것은 매우 유익합니다. http://java.sun.com/developer/technicalArticles/J2SE/JavaRule.html 에서 더 많은 정보를 볼 수 있으며 오픈 소스 구현을 here에서 볼 수 있습니다.
  2. Dynamic Language 또는 Script LanguageScript api를 사용합니다.

두 번째 해결 방법에는 여러 가지 선택 사항이 있습니다. 나는 다음을 쓰고있다 :

웹에서 간단히 검색하여 볼 수있는 JRuby과 같은 동적 언어가 더 있습니다. 자바의 Script api에 대한 자세한 내용은 here에서 확인할 수 있습니다.

편집 :

if(variable_1 == 100) 
{ 
    System.out.println("Sample condition checked and is true."); 
} 
else 
{ 
    System.out.println("Sample condition checked and is false."); 
} 

둘째는 자바에서 variable_1을 설정

먼저 이름 test.bsh containg 타격 내용으로 파일을 만듭니다

예제를 들어, 때라도로 BeanShell Script Language을 사용할 수 있습니다 :

import bsh.*; 

Interpreter bsh = new Interpreter(); 
bsh.set ("variable_1", 100); 

및 최종 호출 스크립트에 다음과 같이

bsh.source (script); 

및 결과 다음과 같은 것입니다 :이 방법에 의해

Sample condition checked and is true. 

다시 컴파일하거나 다시 시작하지 않고 test.bsh 내용을 변경할 수 있습니다.