获得门票价格

时间:2016-03-10 11:25:56

标签: java math logic

我正在尝试制作一个简单的java程序,它可以计算出多少票。 1张成人票10美元,儿童5美元,但家庭票(2名成人和2名儿童)为26美元。明显的节省 因此,当来自用户的输入时,它需要计算多少家庭票(如果适用),然后计算物品的价格,如果它们不适合家庭捆绑。

  • 成人人数:2
  • 儿童人数:4
  • 家庭票数:1
  • 儿童票数:2
  • 总费用:36美元

我无法弄清楚获得配对背后的逻辑,如果需要,比较并从成人和儿童中取出额外的物品。以下是迄今为止我所得到的:

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

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的原因。