私はトラックロード問題と呼ばれるビンパッキング問題のバージョンを解決しようとしています。ここに私のコードのスニペットは、これまでのところです:リスト内のオブジェクトをリスト内でどのように印刷しますか?
public class Truck {
private List<Stack> stacks = new ArrayList<Stack>();
...
public String toString(){
String stringToReturn = "";
for(Stack st : stacks){
stringToReturn = stringToReturn + st.toString();
}
return String.format("%s\n", stringToReturn);
}
}
public class Stack {
private List<Box> boxes = new ArrayList<Box>();
...
public String toString(){
String stringToReturn = "";
for(Box b : boxes){
stringToReturn = stringToReturn + b.toString() + ", ";
}
return String.format("%s\n", stringToReturn);
}
}
public class Box {
@Override
public String toString(){
return String.format("H: %d, W: %d | ", getHeight(), getWidth());
}
public class Loader{
static List<Truck> trucks = new ArrayList<Truck>();
public static void printTrucks(List<Truck> trucks){
int counter = 1;
for(Truck t : trucks){
if(t.getStacks().size() != 0){
System.out.printf("Truck %d:\n", counter);
t.toString();
counter++;
}
}
}
}
あなたが見ることができるように、私は3つのオブジェクトを持っています。トラック、スタック(すなわち、データ構造ではないボックスのスタック)およびボックスを含む。 Stackは現在スタックにあるボックスのリストを格納します。トラックには、それが持つスタックのリストが格納されています。 これは私がやりたいことです。その中に何かがあるトラックごとに、それらのスタック内の任意のスタックおよび任意のボックスをプリントアウトする。私が達成しようとしている出力例は、このようになります:
トラック1:
スタック1:H:1、W:4 | H:2、W:2
スタック2:H:4、W:4トラック2:
スタック1:H:3、W:6
現在、すべてのIされるプリントアウト:
トラック:1
トラック:2
等
何らかの理由でstringToReturnが私の考え方で動作していないように見えます。誰もがこれでいくつかの助けを提供することはできますか?私のコードは、私が望む例に従わないが、ボックスの情報が表示されていない理由はまだわかりません。
文字列を返すt.toString()を呼び出しますが、結果を印刷する代わりに無視します。 –
't.toString()'の戻り値は表示されません。 – shmosel
ああ私の神、どうしたの? –