- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package order;
import java.util.Arrays;
/**
*
* @author Alexander
*/
public class Order {
private static String[] products = {"Compass", "Eraser", "Pen", "Pencil","Pencil Case", "Pencil Sharpener", "Ruler", "Scissors"};
private static double[] prices = {4.5, 0.5, 0.3, 0.6, 10, 0.3, 1.2, 2.5};
public static int orderNum = 0; //
private String productName ;
private double price;
private int discount;
private final int minDiscount = 0;
private final int maxDiscount = 50;
private int quantity;
private final int minQuantity = 0;
private final int maxQuantity = 1000;
private double total;
private String message;
private boolean isDiscounted = false;
private boolean isValidOrder = true;
public Order (){
isValidOrder = false;
message = "**ERROR** : Order number cannot be totalled as no details have been supplied.";
orderNum++;
}
public Order (String productName, int quantity) {
this.quantity = quantity;
this.productName = productName;
testQuantity(quantity);
if (isValidOrder = true){
calculate();
}
orderNum++;
}
public Order (String productName, int quantity, int discount) {
this.productName = productName;
this.quantity = quantity;
this.discount = discount;
testQuantity(quantity);
testDiscount(discount);
getPrice(productName);
if (isValidOrder = true){
calculate();
}
orderNum++;
}
public String getOrderDetails(){
if(isValidOrder == true && isDiscounted == true){
message = "Order Number: " + orderNum + "\n" + "Product Name: " + productName + "\n" + "Product Price: $" + price + "\n" + "Order Quantity: " + quantity + "\n" + "Discount: " + discount + "%" + "\n" + "Total Price: $" + total;
}
else if(isValidOrder == true && isDiscounted == false){
message = "Order Number: " + orderNum + "\n" + "Product Name: " + productName + "\n" + "Product Price: $" + price + "\n" + "Order Quantity: " + quantity + "\n" + "Total Price: $" + total;
}
return message;
}
private void getPrice(String pce) {
Arrays.sort(products);
int searchProductArray = Arrays.binarySearch(products, pce);
if (searchProductArray >= 0) {
price = prices[searchProductArray];
productName = products [searchProductArray];
isValidOrder = true;
}
else {
price = 0.0;
isValidOrder = false;
message = "**ERROR**: Invalid product name";
}
}
public void calculate (){
if (isDiscounted == false){
total = quantity * price;
}
else {
total = quantity * price - quantity * price * (discount/10);
}
}
public void testQuantity(int quantity){
boolean isValidOrder = true;
if (quantity <= minQuantity) {
message = "**ERROR**: Invalid quantity. Quantity cannot be 0 or less";
isValidOrder = false;
}
else if (quantity > maxQuantity) {
message = "**ERROR**: Invalid quantity. Quantity cannot be greater than 1000";
isValidOrder = false;
}
else {
this.quantity = quantity;
this.isValidOrder = true;
}
}
public void testDiscount (int discount) {
boolean isDiscounted = false;
if (discount <= minDiscount) {
message = "**ERROR**: The discount rate cannot be lower than or equal to 0";
isDiscounted = false;
}
else if (discount > maxDiscount) {
message = "**ERROR**: The discount rate cannot be greater than 50";
isValidOrder = false;
}
else {
this.discount = discount;
this.isDiscounted = true;
this.isValidOrder = true;
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Order O1 = new Order();
O1.getPrice("Compass");
System.out.println(O1.getOrderDetails());
}
}
getPrice方法接收一个参数:productName。方法是分配一个val,需要使用两个数组来完成这个任务。一个名为 products 的数组用于保存产品名称列表。另一个名为“价格”的数组用于保存该产品的价格。索引位置应该匹配。您需要使用binarySearch 方法找到productName 在products 数组中的索引位置。获得此位置后,您将需要使用此索引位置从价格数组中分配价格。
这是我到目前为止所拥有的,但我不完全确定它是否正确。
最佳答案
不,一般来说这是不正确的。原因是您对产品数组进行排序,但保持价格数组不变,因此产品通常与它们的价格不对应,即索引位置不匹配。
private void getPrice(String s) {
Arrays.sort(products); <--- sort products, but prices' indices remain unchanged
int searchedProductIndex = Arrays.binarySearch(products, s);
if (searchedProductIndex >= 0) {
this.price = prices[searchedProductIndex];
this.isValidOrder = true;
} else {
price = 0.0;
isValidOrder = false;
message = "**ERROR**: Invalid product name";
}
} <--- closing curly bracket
请记住以下几点。
关于java - 不太明白如何匹配两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247964/
在我们的服务出现一些预期的增长之后,突然间一些更新花费了非常长的时间,这些过去非常快,直到表达到大约 2MM 记录,现在它们每个需要大约 40-60 秒。 update table1 set fiel
我在服务中实现了一个传感器事件监听器,只要采样周期和最大报告延迟低于 1 秒,该监听器就可以正常工作,但一旦我将采样周期增加到超过 1 秒,传感器就根本不会更新。 我希望采样周期为 10 秒(可能是
我使用 Tkinter GUI 来启动测量和分析过程,基本上只需单击一个按钮即可开始。由于这些测量可能需要一段时间,我尝试添加一个进度条,即这个: http://tkinter.unpythonic.
我正在尝试使用套接字发送数据包,但出现错误。 invalid conversion from ‘omnetpp::cPacket*’ to ‘inet::Packet*’ [-fpermissive]
我刚刚发现 String#split 有以下奇怪的行为: "a\tb c\nd".split => ["a", "b", "c", "d"] "a\tb c\nd".split(' ') => ["a
您好,我正在尝试 ClojureScript,我正在使用 Klipse作为我的 REPL 差不多。这可能不是它的预期用途,但因为我没有做任何太复杂的事情,所以现在没问题。 我遇到的一个问题是尝试设置计
根据下面的数据,ClockKit 会生成一次 future 的 CLKComplicationTimelineEntry 项,但对于过去的时间点,会进行 24 次调用!这是为什么? 更多详情: 我注意
我有一个 MySQL 表,这个表有一个名为 datetime_utc 的 DATETIME 列。如您所料,它是 UTC 日期和时间。在我的 Bookshelf 模型中,我定义了一个虚拟 getter,
大家好,我是二哥呀! 昨天,一位球友问我能不能给他解释一下 @SpringBootApplication 注解是什么意思,还有 Spring Boot 的运行原理,于是我就带着他扒拉了一下这个注解的源
我是一名优秀的程序员,十分优秀!