问题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
我怎么开始这个?我是一名法学院学生,但被迫这样做,请帮助我,你的善意会在事先得到回报
答案 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.java
,Order.java
和Restaurant.java
。接下来,您需要编译您的程序 - 在基本术语中,这是验证您编写的代码并将其转换为Java Runtime可以理解的内容的过程。我不会尝试解释这个问题,它在Getting Started Guide中得到了很好的解释,它也解释了如何运行Java程序 - 最终你将要找到一个命令行看起来像:
java -cp [path to class files] Restaurant