【发布时间】: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