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

时间:2018-07-25 07:45:51

标签: java

需要编码神的指导,以指导我如何使我的代码执行我需要的工作。

所以情况是: 我需要告诉程序运行门票价格乘以所购买门票数量的计算。看起来容易吗? -预先添加了三个变量。

参见下文:

    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

任何帮助都将是惊人的! :)

7 个答案:

答案 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
}

然后将priceTicketQuantity相乘得到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();

对于初学者来说不错