2016-12-22 14 views
0

私はトラックロード問題と呼ばれるビンパッキング問題のバージョンを解決しようとしています。ここに私のコードのスニペットは、これまでのところです:リスト内のオブジェクトをリスト内でどのように印刷しますか?

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が私の考え方で動作していないように見えます。誰もがこれでいくつかの助けを提供することはできますか?私のコードは、私が望む例に従わないが、ボックスの情報が表示されていない理由はまだわかりません。

+4

文字列を返すt.toString()を呼び出しますが、結果を印刷する代わりに無視します。 –

+4

't.toString()'の戻り値は表示されません。 – shmosel

+0

ああ私の神、どうしたの? –

答えて

0

私はトンネルビジョンを得て、私がt.toString()と呼んだ事実を完全に逃してしまって、何もしませんでした。それを印刷するだけでした。愚かな私。

+0

あなた自身の答えを[受け入れる](http://meta.stackexchange.com/a/5235/194686)が可能で、完全に受け入れられます。 – errantlinguist

+1

@errantlinguist私はそれを行うために2日間待たなければならないと言う –

関連する問題