需要编码神的指导,以指导我如何使我的代码执行我需要的工作。
所以情况是: 我需要告诉程序运行门票价格乘以所购买门票数量的计算。看起来容易吗? 但-预先添加了三个变量。
参见下文:
int TicketType = 0;
double ChildTicket = 18.00;
double AdultTicket = 36.00;
double SeniorTicket = 32.50;
int TicketQuantity = 0;
double TotalCost = ?
从本质上讲-我需要在Psuedocode级别上进行操作以使其变得更容易:
Compute TotalCost = Result of ticket type (ChildTicket,AdultTicket or SeniorTicket) * TicketQuantity
任何帮助都将是惊人的! :)
答案 0 :(得分:5)
您可以使用switch
语句找出单票的TicketType
(儿童,成人,老人)和price
:
double price;
switch(TicketType){
case 1:
price = ChildTicket;
break;
case 2:
price = AdultTicket;
break;
case 3:
price = SeniorTicket;
break;
default:
// use default value for price or throw an error
}
然后将price
与TicketQuantity
相乘得到TotalCost
:
double TotalCost = price * TicketQuantity;
注意: Java的命名约定说,变量应始终以小写字母开头,因此最好不要使用
TotalCost
totalCost
等。
答案 1 :(得分:3)
您可以将变量作为值存储在双精度数组中,然后可以使用TicketType中的索引访问该值。就是这样:
int TicketType = 0;
double ticketsValues[] = [18.00,32.00,32.50]; //The first position is ChildTicket, the 2nd AdultTicket and so..
int TicketQuantity = 0;
double TotalCost = ticketsValue[TicketType] * TicketQuantity;//Here you access to the value depending on the TicketType.
答案 2 :(得分:1)
为此使用Enum:
public enum TicketType {
ADULT(36), CHILD(18), SENIOR(32,50);
private final int cost;
TicketType(int cost) { this.cost = cost; }
public int getValue() { return cost; }
}
public int getTotalPrice(TicektType tp, int quantity){
return tp.getValue() * quantity;
}
答案 3 :(得分:1)
我建议将枚举与
之类的构造函数一起使用public enum Ticket{
SENIOR(7.0), ADULT(10.0), CHILD(3.0);
Ticket(double price) {
this.price = price;
}
private final double price;
public double getPrice() {
return price;
}
}
答案 4 :(得分:1)
有多种解决方法。
我建议为不同类型的票证创建一个Enum
。
public enum TicketType {
SENIOR(32.50D),
ADULT(36.00D),
CHILD(18.00D);
private final double price;
TicketType(double price) {
this.price = price;
}
public double getPrice() {
return price;
}
public double getCalculatedPrice(int ticketAmount) {
return price * ticketAmount;
}
}
相反,您也可以尝试这种方式
int ticketType = 0; //change
double[] prices = {32.50D, 36.00D, 18.00D}; //Senior, Adult, Child
int ticketQuantity = 0; //change
int totalCost = prices[ticketType] * ticketQuantity;
其中一些补充内容应检查ticketType
是否大于或小于prices
大小,以避免ArrayIndexOutOfBoundsException
。您还应该检查数量是否不少于零。
答案 5 :(得分:1)
由于年龄组(老人,成人,儿童)不应更改,因此像其他答案所建议的那样,定义枚举(TicketType
)是适当的。但是由于价格可能会发生变化,因此我不会在枚举iself中对它们进行硬编码。我建议使用地图:
Map<TicketType, Double> prices = new EnumMap<>(TicketType.class);
prices.put(TicketType.CHILD, ChildTicket);
prices.put(TicketType.ADULT, AdultTicket);
prices.put(TicketType.SENIOR, SeniorTicket);
地图可以填充从数据源读取的价格,并在每次价格变化时进行更新。
例如,获取成年人的价格只是打电话:
double adultPrice = prices.get(TicketType.ADULT);
或更笼统:
public double getPriceFor(TicketType type) {
return prices.get(type) ;
}
回答问题的最后一部分。然后可以计算出总费用:
public double getTotalCost(int children, int adults, int seniors) {
return getPriceFor(TicketType.CHILD) * children +
getPriceFor(TicketType.ADULT) * adults+
getPriceFor(TicketType.SENIOR) * seniors;
}
答案 6 :(得分:0)
这就是我最终要做的。步骤1在初始化中添加了其他选项
double Option1 = ChildTicket;
double Option2 = AdultTicket;
double Option3 = SeniorTicket;
之后-在需要信息和结果的实际代码中,创建了一系列的if语句来关联正确的选项:
if (TicketType == 1) {
System.out.println ("Child tickets are $18.00,How many would you like to purchase?");
TicketQuantity =input.nextInt();
TotalCost = Option1 * TicketQuantity;
System.out.println ("Total Cost of tickets = $" + (TotalCost));
System.out.println ("Press 1 to confirm");
Confirmation = input.nextInt();
对于初学者来说不错