2017-11-19 10 views
0

텍스트 출력 파일을 생성하는 프로그램의 일부로 사전 정의 된 번호 n (필수 요소 수에 해당)을 삽입하고 조건을 자동으로 작성해야합니다 그들 사이에.지정된 수의 요소 사이에 조건 집합 인쇄

예. n = 3 인 경우, 요소 s1, s2 및 s3이 생성됩니다. 아래 조건을 자동으로 생성하여 텍스트 파일로 인쇄하는 것입니다.

s1<s2 & s1<s3 
s2<=s1 & s2<s3 
s3<=s1 & s3<=s2 

위의 조건은 요소 간의 가능한 모든 조합을 포함합니다. 나는이 경우 counter를 사용하여 정확하지 않은 것을 알고

int counter = 0; 
ArrayList<String> state = new ArrayList<String>(); 
for (int i=0; i<=n; i++) { 
    state.add(i,"s"+1)); 
} 

for (int j=1; j<=n; j++) { 

    for (int i=0; i<(n-1); i++) { 
     if (i==(n-2)) { 
      fw.write(state.get(i)+"<"+state.get(counter)); 
     } 
     else { 
      fw.write(state.get(i)+"<"+state.get(counter)+" & "); 
     } 
    } 
    counter++; 
} 

: 내가 지금까지 가지고하면 미리 정의 된 번호 N하고 필요한 결과를 다음 코드로 많은 요소를 유지하는 ArrayList입니다 그러나 나는 다른 조건들을 정확하게 표현할 수있는 방법을 생각할 수 없다.

UPDATE :

ArrayList<String> collectStates = new ArrayList<String>(); 
String activeState,writtenState; 
for (int i=0; i<n; i++) { 
     for (int j=0; j<state.size(); j++) { 
      if (state.get(i) != state.get(j)) { 
       activeState=state.get(i)+"<"+state.get(j); 
       writtenState=state.get(j)+"<"+state.get(i); 

       if (collectStates.contains(activeState)) { 
        System.out.print(state.get(i)+"<="+state.get(j)); 
       } 
       else { 
        System.out.print(activeState); 
       } 
       if (j!=state.size()-1) { 
        System.out.print(" & "); 
       } 
       collectStates.add(writtenState); 
      } 
     } 
     System.out.print("\n"); 
    } 

내가받을 출력은 다음과 같습니다 :

s1<s2 & s1<s3 
s2<=s1 & s2<s3 
s3<=s1 & s3<=s2 & 

테스팅 목적으로 다음 코드를 사용하여이

내가 원하는 결과에 가깝게 관리 유일한 문제는 최종 행의 마지막에 여분의 &입니다. 아직 수정 방법을 모르겠습니다.

답변

0

내 질문에 대한 답변을 찾았습니다.

올드 버전 :

if (j!=state.size()-1) { 
    System.out.print(" & "); 
} 

업데이트 버전 : 문제는 마지막에 항상 등장

if ((j!=state.size()-1) && ((j!=state.size()-2) || (i!=state.size()-1))) { 
    fw.write(" & "); 
} 

설명의 업데이트 섹션에서 나는 여분의 & 기호를 제거하려면 다음 추가를 수행 행의 출력 조건, 따라서 최신 수정. 출력은 이제 설명과 정확히 일치합니다. 우리가 s2?s1 & s2?s3

을 유지

s1?s1 & 우리가 s1?s2 & s1?s3

s2?s2 &을 유지 : 제거하여

s1?s1 & s1?s2 & s1?s3 
s2?s1 & s2?s2 & s2?s3 
s3?s1 & s3?s2 & s3?s3 

그래서 : 더 자세히

, 무슨 프로그램이 한 일은 동일한 값을 제거하는 것입니다 s3?s3 유지하기 s3?s1 & s3?s2 &

결과적으로 마지막 행의 여분 &을 제거하려면 새 조건을 추가해야합니다.