2017-11-19 11 views
0

テキスト出力ファイルを生成するプログラムの一部として、定義済みの番号n(必要な要素の数に相当)を挿入し、条件を自動的に作成する必要がありますその中で。指定された数の要素の間に一連の条件を出力する

など。 n = 3の場合、要素s1、s2、s3が生成される。

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

上記の条件は、要素間のすべての組み合わせを網羅:私は何を達成したいと、自動的に次の条件を生成し、テキストファイルにそれらを印刷することです。私はこれまで持っていることは事前に定義された数Nし、必要な結果を生成するために、次のコードのように多くの要素を保持しているArrayList次のとおりです。

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++; 
} 

私はこのケースでcounterを使用すると、正しくないことを知っています私はさまざまな条件を正確に表現する方法を考えることはできません。

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(" & "); 
} 

記述の更新セクションでは、私は余分な&シンボルを削除するには、次の追加を行いました行の出力条件、したがって最新の修正。出力はここでの説明と同じです。さらに詳細には

、どのようなプログラムがやったことは、同一の値を削除することです:

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

だから、削除することによって:

s1?s1 &を我々はs2?s1 & s2?s3

を保つs1?s2 & s1?s3

s2?s2 &を保ちますs3?s3を保ちますs3?s1 & s3?s2 &

結果として、最後の行の余分な&を削除するには、新しい条件を追加する必要があります。

関連する問題