前言

最近和朋友打羽毛球,6个人参加了羽毛球活动,打完了要计算平均每个人的费用,如果每次都用纸和笔来算就会比较麻烦,所以我就写了一个Android的程序来实现自动计算的功能。

用纸和笔计算二元一次方程

举行一次羽毛球活动,有4个男生和2个女生参加。费用由场地费和球费组成,场地费是150元,球费是30元,总共费用是180元,费用AA,出于对女生的关爱,女生优惠5元,也就是女生的平均费用比男生少5元,求男生平均费用是多少,女生平均费用是多少。

这道题,通过二元一次方程可轻松解决,这是初中的数学知识,假设男生的平均费用为x元,女生的平均费用为y元,解题步骤如下:

用Java代码计算二元一次方程

虽说用笔和纸计算二元一次方程很简单,但是每次打完球都需要拿纸和笔这么计算一下的话也是挺麻烦的,所以我就想到了用代码来帮助我们自动完成计算,简单省事。如上面的截图,我们用纸和笔计算二元一次方程时,是分解成了很多步的,但是在Java代码中,没办法这样照搬实现,我们需要把这多个分解写成一个公式,一步完成。

在Java中,各种数据都可以使用变量来表示,所以我先声明各种变量,如下:

  • totalCost:总费用
  • boyCount:男生人数
  • girlCount:女生人数
  • girlDiscounts:女生优惠金额
  • girlAverageCost:女生平均费用
  • boyAverageCost:男生平均费用

根据前面用纸和笔的解题思路,我们换成对应的变量,如下:

  • 男生平均费用 - 女生平均费用 = 女生优惠费用,变量表示如下:

    • boyAverageCost - girlAverageCost = girlDiscounts 通过变换可得:
    • boyAverageCost = girlDiscounts + girlAverageCost,即:男生平均费用 = 女生优惠费用 + 女生平均费用
  • 所有男生的费用 + 所有女生的费用 = 总费用,变量表示如下:
    • boyCount * boyAverageCost + girlCount * girlAverageCost = totalCost,通过变换可得:
    • boyCount * girlDiscounts + boyCount * girlAverageCost + girlCount * girlAverageCost = totalCost,简化可得:
    • boyCount * girlDiscounts + (boyCount + girlCount) * girlAverageCost = totalCost,再简化可得:
    • (boyCount + girlCount) * girlAverageCost = totalCost - boyCount * girlDiscounts,再简化可得:
    • girlAverageCost = (totalCost - boyCount * girlDiscounts) / (boyCount + girlCount)

OK,这里我们还是人工一步一步的进行了换算,但是最后我们得出一个公式来计算女生的平均费用,得到女生的平均费用之后再计算男生的就简单了,男生费用比女生费用多girlDiscounts元,所以:boyAverageCost = girlAverageCost + girlDiscounts

总结就是两条公式,一条计算女生平均费用的,一条计算男生平均费用的如下:

  • girlAverageCost = (totalCost - boyCount * girlDiscounts) / (boyCount + girlCount)
  • boyAverageCost = girlAverageCost + girlDiscounts

公式有了,接下来就可以用代码来实验一下了,这里我就使用Kotlin语言了,和Java语言差不多的,还是之前的那个题目,总费用是180,4个男生2个女生,女生的平均费用比男生少5元,分别计算出男生、女生的平均费,代码如下:

fun main() {val totalCost = 180f   // 总费用val boyCount = 4       // 男生人数val girlCount = 2      // 女生人数val girlDiscounts = 5f // 女生优惠// 计算女生平均费用val girlAverageCost = (totalCost - boyCount * girlDiscounts) / (boyCount + girlCount)// 计算男生平均费用val boyAverageCost = girlAverageCost + girlDiscounts// 打印结果println("男生平均费用:$boyAverageCost")println("女生平均费用:$girlAverageCost")
}

打印结果如下:

男生平均费用:31.666666
女生平均费用:26.666666

我们以后只需要修改代码中前面的4个变量的值,就可以自动计算出男生、女生的平均费用了。

这里需要注意的是,金额的计算有可能会有小数,所以在声明总费用和女生优惠金额时,我使用了float类型,这样的计算结果就会保留小数,比较精确。

Android程序实现

有了计算公式,我们就可以实现一个Android程序了,可以安装在自己的Android手机上,这样以后打完羽毛球后计算费用时,打开此应用就可以轻松的计算平均费用了,这里我增加了更多的输入,应用截图如下:


这里必须要输入的只有两项,其它的可以填0或者删除留空,必须要输入的2项如下:

  • 场地费加球费
  • 男生人数

输入这两项后点击“开始计算结果”按钮就能算出男生的平均每人费用,如果只有女生,则把女生当成男生就行了,即把女生人数输入到男生人数的地方进行计算,如果男女费用一样,则男女人数相加后填入男生人数的地方进行计算。如果男女费用不一样,才需要分开输入男女人数,然后再填入女生优惠。

其它的选项,看情况输入,比如输入一桶球的价格,程序就会自动计算出平均每个球的价格(按一桶球12个球计算),然后我们再输入总共用了多少个球,程序会自动计算出球的总消费,我们再输入场地的价格,程序会自动计算场地加球的总费用。

具体实现代码托管在码云上,可自行下载修改:https://gitee.com/daizhufei/badminton-charge-calculator,如果不需要修改,也可以直接下载apk安装到手机上直接使用:https://gitee.com/daizhufei/badminton-charge-calculator/raw/master/app/release/BadmintonChargeCalculator.apk

java代码实现二元一次方程相关推荐

  1. Java 算法 解二元一次方程

    目录标题 题目描述 解题思路 代码 题目描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代表未知数,a, b, c, d, e, ...

  2. 算法提高 解二元一次方程组(java)

    算法提高 解二元一次方程组 描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代表未知数,a, b, c, d, e, f为参数. ...

  3. java程序如何解代数方程_基于代数方程库Algebra.js解二元一次方程功能示例

    本文实例讲述了基于代数方程库Algebra.js解二元一次方程功能.分享给大家供大家参考,具体如下: 假设二元一次方程如下: x + y = 11 x - y = 5 解方程如下: 测试algebra ...

  4. c++代码 二元一次方程求解

    代码摆在这,原理很简单,未考虑溢出问题. //给二元一次方程组求解(带过程) #include<iostream> using namespace std; int main(){doub ...

  5. java:用程序输出二元一次方程的反函数

    输出二元一次方程的反函数 相关说明 源码 运行结果 y=3x+7的反函数 y=6x-8的反函数 y=0x-8的反函数 y=8x的反函数 y=-4x+8的反函数 相关说明 用程序输出二元一次方程的反函数 ...

  6. java求解二元一次方程

    近来看到有个博主用高斯定理求和,刚好有人拜托我求解二元一次方程,故想着用代码来解决,判断b平方-4ac的值来做计算. 代码: private static List getSqrt(Double a, ...

  7. 二元一次方程组、三元一次方程组、四元一次方程组解析解(代码)

    文章目录 一.二元一次方程组解析解 二.三元一次方程组解析解 三.四元一次方程组解析解 一.二元一次方程组解析解 clc clearsyms a11 a12 a21 a22 b1 b2 real x ...

  8. java写二元一次方程组求解

    1.运用克莱姆法则(请自行百度) 2.行列式求解 3.java代码求解 package com.dql.lms.system.liu; import java.math.BigDecimal; imp ...

  9. 每日作业20200429 - 二元一次方程 解鸡兔同笼

    题目 鸡兔同笼, 共有35头, 94脚. 求有几只鸡几只兔 分析 1.列方程组x + y = 352x + 4y = 94 2.求解x = 23y = 12**拓展** 二元一次方程表达式ax + b ...

最新文章

  1. UE:增强现实AR可视化基本概念
  2. Android开发常用开源框架2
  3. Elasticsearch系列「零」架构解析与最佳实践
  4. Python之爬虫(七)正则的基本使用
  5. 20 Alarms, sigaction(), and Reentrant System Calls
  6. Expression Atlas
  7. 一步步教你轻松学主成分分析PCA降维算法
  8. ExtJS4系列目录
  9. 全国二级c语言公共基础知识,全国计算机二级C语言及公共基础知识复习资料
  10. linux设置ipsan_linux 配置IPSAN存储
  11. python与审计底稿关系_干货!审计底稿,六大禁忌
  12. 白盒测试的测试用例设计方法
  13. 笔记本电脑睡眠时间修改不生效
  14. 推荐效果线上评测:AB测试平台的设计与实现
  15. stack的常见用法
  16. RabbitMQ(二) | 消息可靠性(消息确认机制、消息持久化、消息重试机制)
  17. 中文姓名笔画计算(VBS脚本版)
  18. mysql不小心删除root恢复
  19. canvas的width和style.width的区别
  20. 灰度、rgb之间的概念

热门文章

  1. 开关电源基础04:新型开关电源拓扑(2)-新型电源拓扑
  2. 2022年一级注册建筑师考试建筑材料与构造复习题及答案
  3. matplotlib模块的pyplot子模块绘制正切函数
  4. node+mysql+express实现登录、注册功能
  5. js实现浏览器的全屏和退出全屏
  6. 重学JavaScript-day6-贰
  7. 超宽带定位算法matlab,毕业设计_--超宽带(UWB)无线定位技术.doc
  8. 原始GPS坐标(WGS-84)转成百度的经纬度,零误差
  9. Ubuntu安装Eclipse的坑
  10. cookie设置时间倒计时