我试图制作一个简单的java程序,计算票价。一张成人票是十元,一张小孩是五元,但一张家庭票(两名成人及两名儿童)是二十六元。一个明显的节省,所以当输入从用户,它需要计算多少家庭票(如果适用的话),然后定价,如果他们不适合家庭捆绑。
也就是说。
我无法理解获得配对的逻辑,如果需要的话,比较并从成人和儿童那里取出额外的物品。到目前为止,我得到的是:
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;
}发布于 2016-03-10 11:30:47
这件怎么样?
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中,如果你用整数除以整数,它会返回另一个整数“四舍五入”(它不是技术上的四舍五入,它只是截断小于1的任何整数),这就是我们这里需要的。这就是为什么我不使用双倍的原因。
https://stackoverflow.com/questions/35915120
复制相似问题