首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >票的定价

票的定价
EN

Stack Overflow用户
提问于 2016-03-10 11:25:55
回答 1查看 328关注 0票数 1

我试图制作一个简单的java程序,计算票价。一张成人票是十元,一张小孩是五元,但一张家庭票(两名成人及两名儿童)是二十六元。一个明显的节省,所以当输入从用户,它需要计算多少家庭票(如果适用的话),然后定价,如果他们不适合家庭捆绑。

也就是说。

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

我无法理解获得配对的逻辑,如果需要的话,比较并从成人和儿童那里取出额外的物品。到目前为止,我得到的是:

代码语言:javascript
复制
        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;
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 11:30:47

这件怎么样?

代码语言:javascript
复制
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方法,也很容易:

代码语言:javascript
复制
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的任何整数),这就是我们这里需要的。这就是为什么我不使用双倍的原因。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35915120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档