获取门票定价

Getting pricing for tickets

我正在尝试制作一个简单的 java 程序,用于计算票价。 一张成人票是 10 美元,child 票价是 5 美元,而家庭票(2 名成人和 2 child人)是 26 美元。明显的节省 因此,当用户输入时,它需要计算家庭票的数量(如果适用),然后计算不适合家庭套餐的物品的定价。

我无法弄清楚获得配对、比较并在需要时从成人和 children 那里取出额外物品背后的逻辑。这是到目前为止我得到的:

        double adultPairs,childPairs;
        if (numberAdults <= 1) { 
            adultPairs = 0;
        }
        else if (isEven(numberAdults)) { 
            adultPairs = numberAdults / 2; 
            adultTickets = 0;
        }
        else { 
            adultPairs = numberAdults / 2; 
            adultTickets = 1;
        }

        if (numberChildren <= 1) { 
            childPairs = 0; 
        }
        else if (isEven(numberChildren)) { 
            childPairs = numberChildren / 2; 
            childTickets = 0;
        }
        else { 
            childPairs = numberChildren / 2;
            childTickets = 1;
        }

这个怎么样?

int familyTickets = Math.min(adults/2, childs/2);
int adultTickets = adults - familyTickets*2;
int childTickets = childs - familyTickets*2;

第一行比较成人和儿童的一半(四舍五入)和returns它的最小值。例如,如果您有 9 个成人和 25 个儿童,则需要 9/2 和 25/2,即 4 和 12,因此 returns 4。这就是您想要的家庭票数量。

在接下来的两行中,您只需取所有 adults/children 并减去 adults/children 家庭票,即家庭票数乘以二。


即使没有Math.min方法,也很容易:

int familyTickets = 0;

if (adults > childs){
    familyTickets = childs/2;
} else {
    familyTickets = adults/2;
}

int adultTickets = adults - familyTickets*2;
int childTickets = childs - familyTickets*2;

PS :另请注意,在 Java 中,如果将整数除以整数,则 returns 另一个整数 "rounded" 向下(技术上没有四舍五入,它只是切断任何小于 1) 的东西,这就是我们在这里需要的。这就是我不使用double的原因。