テキスト出力ファイルを生成するプログラムの一部として、定義済みの番号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 &
最後の行の末尾に余分な&
があるだけですが、これは修正方法がまだわかりません。