传递多个值作为方法参数

时间:2015-02-24 21:15:55

标签: java methods

我有一个简单的程序来复制在餐馆吃饭的人和他们订购的物品。

以下是我的Diner类,用于创建表示人物的对象:

package dinersbill;

public class Diner {

    private String name;

    public Diner(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

}

接下来是我的Item类,代表人们可能订购的食物项目:

package dinersbill;

public class Item {

    String name;
    double price;
    Diner buyer;

    public Item(String name, double price, Diner buyer) {
        this.name = name;
        this.price = price;
        this.buyer = buyer;
    }

}

我想拥有该程序,以便在用户希望的情况下将项目分配给多个Diner。怎么会这样做?

4 个答案:

答案 0 :(得分:1)

您可以反过来改变DinerItem之间的对比关系:Diner Item组成。

例如,您可以将ArrayList<Item>放入Diner课程,并有一种方法可以用几道菜肴初次订婚。

答案 1 :(得分:0)

您可以在项目中使用食客名单

public class Item {

    String name;
    double price;
    List<Diner> buyers;

    public Item(String name, double price, List<Diner> buyers) {
        this.name = name;
        this.price = price;
        this.buyers = buyers;
    }

    //You can still have another constructor for a single Diner like this
    public Item(String name, double price, Diner diner) {
        this.name = name;
        this.price = price;
        ArrayList<Diner> diners = new ArrayList<Diner>();
        diners.add(diner);
        this.buyers = diners;
    }

}

答案 2 :(得分:0)

或许解决方案是重新考虑您的模型。 Item和Diner之间真的存在一对多的关系吗?

更自然的关系可能是反转它并让Diner在List对象中保存多个项目。

答案 3 :(得分:0)

听起来你需要一个java集合,而不是你的Diner类中的单个String。

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html

但是,我确定这不是你想要的效果(你希望不止一个Diner订单是一样的,对吗?)

如果是这样,您只需要为每个Diner实例化一个新项目。为什么不将Diner分配给项目,而不是将项目分配给Diner?这样,您可以将同一项目实例化为多个Diners。

基本上,您需要在Diner类中引用Item,但不要在Item类中引用Diner。然后你可以说

new Diner(&#34; Bob&#34;,new Item(&#34; Cheesecake&#34;,2.50));

这将创建一个名为&#34; Bob&#34;谁订了一块芝士蛋糕。

public class Diner {

    private String name;
    private Item item;

public Diner(String name, Item item) {
    this.name = name;
    this.item = item;
}

public String getName() {
    return name;
}

}