java代码为餐厅的多个步骤

时间:2013-06-12 08:01:35

标签: java

问题1:

假设“OOP餐厅”所有者已经让您写了一篇Java 计划采取餐厅客户订单。饮料菜单 餐厅如表1所示。该计划必须允许客户 决定他/她希望订购多少件商品。然后,它会让 客户根据他/她的偏好选择每个项目。上 完成订购后,程序将显示总金额 订单给客户。然后,程序必须询问客户 是否要做另一套订购。

在您的代码中,您必须创建一个方法来处理项目选择和 使用以下方法签名返回项目的价格:

double processItem(int input)

样品输出如图1所示。

Beverage     | Price
Fried Rice   | RM5.50
Chicken Rice | RM5.00
Toast Bread  | RM2.00
Mixed Rice   | RM3.80
Table 1

我怎么开始这个?我是一名法学院学生,但被迫这样做,请帮助我,你的善意会在事先得到回报

1 个答案:

答案 0 :(得分:3)

写出答案对于非程序员来说这是一项相当复杂的任务。在编译和运行之后,应该如何构建程序以进行竞争的概念。

这个答案就是那个顺序,首先我会解释我认为关键点是什么(确定我错过了一些,因为这是第二天性)然后我会给出你指出了如何运行代码。

第1步。

如果您要在纸上执行此操作,请考虑一下所涉及的内容 - 您有一份饮料清单,每个都有名称和价格(菜单)。订单包括来自菜单的一种或多种饮料,其数量不同。您可以按数量将每种饮料的价格加倍,以获得订单的成本。

第2步。

现代计算机语言使用一种称为对象方向的技术,简而言之,它涉及以一般术语描述实体以创建所谓的类。当出现问题时,如步骤1中的问题,在决定类应该是什么时,一个好的经验法则是查看名词 - 在这种情况下饮料,菜单和顺序看起来像是好的候选人。一个类通常具有属性(将使实例唯一的数据)和行为(基于该数据的操作),尽管您不必同时拥有这两个属性,如下面的代码所示。

第3步。

我想到一个非程序员,第2步没有多大意义,所以这里有一些代码(我希望它能让它更清晰一些):

/**
 * This is the way classes are defined in Java, the public bit just says it's visible
 * to every other class in the system.
 */
public class Beverage
{
  //These are the attributes (fields) of the class.  It's good practice to make them
  //private so that they can only be accessed from within the class.
  private String name;
  private BigDecimal cost;

  /**
   * This is the constructor, which is used to create instances of the class.  In
   * this case it takes the arguments used to initialize the attributes of the class.
   */
  public Beverage(String name, BigDecimal cost)
  {
    this.name = name;
    this.cost = cost;
  }

  /**
   * This is a getter, which provides access to the attributes from outside of the  
   * class.
   */
  public BigDecimal getCost()
  { 
    return this.cost;
  }

  public String getName()
  { 
    return this.name;
  }
}

public class Order
{
  //This line is assigning an instance of HashMap (a standard data structure class 
  //in Java).  A map is a bit like a dictionary, you have a key in this case the
  //beverage that allows you to look-up another value, the quantity.
  private Map<Beverage, Integer> beverages = new HashMap<Beverage, Integer>();

  public BigDecimal getTotal()
  {
    BigDecimal total = BigDecimal.ZERO;

    //Loop over all the beverages that have been added to the map summing the cost.
    for (Beverage beverage : this.beverages.keySet())
    {
      //Convert the quantity in the map to a BigDecimal needed for the multiply method.
      BigDecimal quantity = new BigDecimal(this.beverages.get(beverage));

      total = total.add(beverage.getCost().multiple(quantity));  
    }

    return total;
  }

  public void add(Beverage beverage, Integer quantity)
  {        
    //Store the quantity against the beverage.
    this.beverages.put(beverage, quantity);  
  }
}

这两个类是解决问题所需的全部内容。菜单是绝对的,因为Java提供了一个项目列表的类。接下来,您需要在程序中使用它们。

第4步。

在Java中,任何课程都可以“运行”。提供它有一个称为main的特殊方法。同样,通过示例可能更容易:

public class Restaurant
{
  /**
   * The main method is static meaning it can be accessed without creating an instance
   * of the Restaurant class.
   */
  public static void main(String[] args)
  {
    Map<String, Beverage> menu = new HashMap<String, Beverage>();

    //Create the instances of Beverage and add them to the menu.
    menu.put("Fried Rice", new Beverage("Fried Rice", new BigDecimal(5.50)));
    menu.put("Chicken Rice", new Beverage("Chicken Rice", new BigDecimal(5.00)));
    menu.put("Toast Bread", new Beverage("Toast Bread", new BigDecimal(2.00)));
    menu.put("Mixed Rice", new Beverage("Mixed Rice", new BigDecimal(3.80)));

    //Create an order and add items from the menu to it.
    Order order1 = new Order();
    order1.add(menu.get("Fried Rice"), 2);
    order1.add(menu.get("Toast Bread"), 3);
    order1.add(menu.get("Mixed Rice"), 1);

    System.out.println("Total for order 1: " + order1.getTotal()); 

    //Create another order and add items from the menu to it.
    Order order2 = new Order();
    order2.add(menu.get("Chicken Rice"), 1);
    order2.add(menu.get("Mixed Rice"), 1);
    order2.add(menu.get("Toast Bread"), 2);

    System.out.println("Total for order 2: " + order2.getTotal()); 
  }
}

第5步。

这是我认为你需要的所有代码。但是为了运行它,还有一些进一步的步骤。首先是安装Java Development Kit,可以从Oracle下载。然后,在Java中,每个类通常在与具有.java扩展名的类具有相同名称的文本文件中声明 - 您最终会得到Beverage.javaOrder.javaRestaurant.java。接下来,您需要编译您的程序 - 在基本术语中,这是验证您编写的代码并将其转换为Java Runtime可以理解的内容的过程。我不会尝试解释这个问题,它在Getting Started Guide中得到了很好的解释,它也解释了如何运行Java程序 - 最终你将要找到一个命令行看起来像:

java -cp [path to class files] Restaurant