我想打印出cook3为准备做了什么。这应该出来了:“Pebble穿上围裙”。但相反,我只得到:“穿上围裙”,所以没有名字。我试图添加一个策略模式,我认为我做了但现在唯一的问题就是这个。
这是我的代码:
package cook;
import cook.domein.Restaurant;
import cook.domein.apron;
import cook.domein.classic;
import cook.domein.cook;
import cook.domein.hardRock;
import cook.domein.knives;
import cook.domein.preperation;
public class main {
public static void main(String[] args) {
Restaurant rest = new Restaurant();
cook cook1 = new cook("");
cook cook2 = new cook("Glenn");
cook cook3 = new cook("Pebble");
rest.addCook(cook1);
rest.addCook(cook2);
rest.addCook(cook3);
rest.doPreparation(new apron());
}
}
这是我的界面:
package cook.domein;
public interface preperation {
public void doPreparation(String naam);
}
这是我的子类围裙
package cook.domein;
public class apron implements preperation {
@Override
public void doPreparation(String naam) {
System.out.println(naam+"Putting on a Apron");
}
}
这是我的餐厅课程:
package cook.domein;
import java.util.ArrayList; import java.util.List;
公共级餐厅实施准备{ 列出厨师;
public Restaurant() {
this.cooks= new ArrayList<cook>();
}
public void addCook(cook cook) {
this.cooks.add(cook);
}
public void removeCook(cook cook) {
this.cooks.remove(cook);
}
public String calculateTotal(){
for(cook cook: cooks){
cook.getNaam();
}
return "";
}
public void doPreparation(preperation prepMethod){
String naam = calculateTotal();
prepMethod.doPreparation(naam);
}
@Override
public void doPreparation(String naam) {
// TODO Auto-generated method stub
}
}
烹饪班: package cook.domein;
public class cook {
private cook naam;
public cook(cook naam) {
this.naam = naam;
}
public cook(String string) {
// TODO Auto-generated constructor stub
}
public cook getNaam() {
return naam;
}
public void setNaam(cook naam) {
this.naam = naam;
}
}
答案 0 :(得分:1)
您将空字符串传递给doPreparation
方法。这就是原因:
public String calculateTotal(){
for(cook cook: cooks){
cook.getNaam();
}
return "";
}
此方法只会 返回一个空字符串。这就是你获得输出的原因;它按设计工作。
您可能打算在餐厅的所有厨师中进行迭代,并与他们一起进行准备。这是解决这个问题的方法之一。
public void doPreparation(preperation prepMethod){
for(cook currentCook : cooks) {
prepMethod.doPreparation(currentCook.getNaam());
}
}