如何打印列表中列表的对象?

时间:2016-12-22 21:57:53

标签: java string bin-packing

我正在尝试解决一个名为卡车装载问题的装箱问题。以下是我的代码片段:

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

你可以看到,我有三个物体;卡车,堆栈(即一堆不是数据结构的盒子)和一个盒子。堆栈存储当前堆栈中的框列表。卡车存储它拥有的堆栈列表。 所以这就是我想要的;对于装有物品的每辆卡车,打印出任何堆叠和堆叠中的任何盒子。我想要实现的示例输出是:

  

卡车1:
    堆栈1:H:1,W:4 | H:2,W:2
    堆栈2:H:4,W:4

     

卡车2:
  堆栈1:H:3,W:6

目前我打印的全部是:

  

卡车:1
  卡车:2
  等

由于某种原因,stringToReturn似乎没有像我想的那样工作。有人可以提供一些帮助吗?我知道我的代码不符合我想要的例子,但我仍然不明白为什么没有关于框的信息没有显示。

1 个答案:

答案 0 :(得分:0)

原来我得到了隧道视觉并且完全错过了我称之为t.toString()然后没有做任何事情的事实。只需打印出来。傻我。