Java 编码 - 用于创建答案变量的多个变量



需要编码之神的指导时刻,告诉我如何让我的代码做我需要它做的事情。

所以情况是:我需要告诉程序运行票价乘以购买的门票数量的计算。似乎很容易?但是- 这在前面有三个变量。

见下文:

int TicketType = 0;
double ChildTicket = 18.00;
double AdultTicket = 36.00;
double SeniorTicket = 32.50;
int TicketQuantity = 0;
double TotalCost = ?

本质上 - 我需要从伪代码级别发生什么才能使这更容易:

Compute TotalCost = Result of ticket type (ChildTicket,AdultTicket or SeniorTicket) * TicketQuantity

任何帮助都会很棒! :)

您可以使用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等。

您可以将变量作为值存储到双精度数组中,然后可以使用 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.

我建议使用带有构造函数的枚举,例如

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;
}
}

有不同的方法可以解决这个问题。

我建议为不同类型的票创建一个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。您还应该检查数量是否不小于零。

由于年龄组(老年人,成人,儿童)不应该改变,因此定义枚举(TicketType)是合适的,就像其他答案建议的那样。但是由于价格可能会发生变化,我不会在枚举中对它们进行硬编码。我建议使用地图:

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;
}

使用枚举,如下所示:

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;

}

这就是我最终所做的。步骤 1 在初始化中添加了其他选项

double Option1 = ChildTicket;
double Option2 = AdultTicket;
double Option3 = SeniorTicket;

THEN - 在需要信息和结果的实际代码中,创建了一个 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();

对于初学者来说还不错

最新更新