我正在尝试制作一个简单的java程序,它可以计算出多少票。 1张成人票10美元,儿童5美元,但家庭票(2名成人和2名儿童)为26美元。明显的节省 因此,当来自用户的输入时,它需要计算多少家庭票(如果适用),然后计算物品的价格,如果它们不适合家庭捆绑。
即
我无法弄清楚获得配对背后的逻辑,如果需要,比较并从成人和儿童中取出额外的物品。以下是迄今为止我所得到的:
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;
}
答案 0 :(得分:4)
这个怎么样?
int familyTickets = Math.min(adults/2, childs/2);
int adultTickets = adults - familyTickets*2;
int childTickets = childs - familyTickets*2;
第一行比较成人和孩子的一半(向下舍入)并返回它的最小值。例如,如果您有9名成人和25名儿童,则需要9/2和25/2,即4和12,因此它将返回4.这就是您想要的家庭票数。
在接下来的两行中,您只需携带所有成人/儿童并减去成人/儿童家庭门票,这是家庭门票的数量乘以2。
即使没有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中,如果将整数除以整数,则返回另一个整数&#34;舍入&#34;向下(它不是技术上的圆形,它只是切断了小于1的任何东西),这就是我们需要的东西。这就是我不使用double的原因。