【问题标题】:How do you print out objects of a list within a list?如何打印列表中的列表对象?
【发布时间】:2016-12-22 21:57:53
【问题描述】:

我正在尝试解决一种称为卡车装载问题的装箱问题。到目前为止,这是我的代码的 sn-p:

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 |高:2,宽:2
堆栈 2:H:4,W:4

卡车 2:
堆栈 1:高:3,宽:6

目前我打印出来的只有:

卡车:1
卡车:2
等等

由于某种原因,stringToReturn 似乎没有按照我的想法工作。任何人都可以提供一些帮助吗?我知道我的代码没有遵循我想要的示例,但我仍然不明白为什么没有显示框上的任何信息。

【问题讨论】:

  • 你调用了 t.toString(),它返回一个字符串,但是你忽略了结果而不是打印它。
  • 你没有打印t.toString()的返回值。
  • 天哪,我怎么错过了?!
  • 您可以只返回stringToReturn 而不是在其上使用String.format。或者使用StringBuilder 连接字符串。

标签: java string bin-packing


【解决方案1】:

结果我得到了隧道视野,完全错过了我调用 t.toString() 然后什么也没做的事实。只需要打印出来。傻我。

【讨论】:

  • accept 你自己的答案是完全可以接受的。
  • @errantlinguist 说我必须等 2 天才能做到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多