java代码实现二元一次方程
前言
最近和朋友打羽毛球,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代码实现二元一次方程相关推荐
- Java 算法 解二元一次方程
目录标题 题目描述 解题思路 代码 题目描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代表未知数,a, b, c, d, e, ...
- 算法提高 解二元一次方程组(java)
算法提高 解二元一次方程组 描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代表未知数,a, b, c, d, e, f为参数. ...
- java程序如何解代数方程_基于代数方程库Algebra.js解二元一次方程功能示例
本文实例讲述了基于代数方程库Algebra.js解二元一次方程功能.分享给大家供大家参考,具体如下: 假设二元一次方程如下: x + y = 11 x - y = 5 解方程如下: 测试algebra ...
- c++代码 二元一次方程求解
代码摆在这,原理很简单,未考虑溢出问题. //给二元一次方程组求解(带过程) #include<iostream> using namespace std; int main(){doub ...
- java:用程序输出二元一次方程的反函数
输出二元一次方程的反函数 相关说明 源码 运行结果 y=3x+7的反函数 y=6x-8的反函数 y=0x-8的反函数 y=8x的反函数 y=-4x+8的反函数 相关说明 用程序输出二元一次方程的反函数 ...
- java求解二元一次方程
近来看到有个博主用高斯定理求和,刚好有人拜托我求解二元一次方程,故想着用代码来解决,判断b平方-4ac的值来做计算. 代码: private static List getSqrt(Double a, ...
- 二元一次方程组、三元一次方程组、四元一次方程组解析解(代码)
文章目录 一.二元一次方程组解析解 二.三元一次方程组解析解 三.四元一次方程组解析解 一.二元一次方程组解析解 clc clearsyms a11 a12 a21 a22 b1 b2 real x ...
- java写二元一次方程组求解
1.运用克莱姆法则(请自行百度) 2.行列式求解 3.java代码求解 package com.dql.lms.system.liu; import java.math.BigDecimal; imp ...
- 每日作业20200429 - 二元一次方程 解鸡兔同笼
题目 鸡兔同笼, 共有35头, 94脚. 求有几只鸡几只兔 分析 1.列方程组x + y = 352x + 4y = 94 2.求解x = 23y = 12**拓展** 二元一次方程表达式ax + b ...
最新文章
- UE:增强现实AR可视化基本概念
- Android开发常用开源框架2
- Elasticsearch系列「零」架构解析与最佳实践
- Python之爬虫(七)正则的基本使用
- 20 Alarms, sigaction(), and Reentrant System Calls
- Expression Atlas
- 一步步教你轻松学主成分分析PCA降维算法
- ExtJS4系列目录
- 全国二级c语言公共基础知识,全国计算机二级C语言及公共基础知识复习资料
- linux设置ipsan_linux 配置IPSAN存储
- python与审计底稿关系_干货!审计底稿,六大禁忌
- 白盒测试的测试用例设计方法
- 笔记本电脑睡眠时间修改不生效
- 推荐效果线上评测:AB测试平台的设计与实现
- stack的常见用法
- RabbitMQ(二) | 消息可靠性(消息确认机制、消息持久化、消息重试机制)
- 中文姓名笔画计算(VBS脚本版)
- mysql不小心删除root恢复
- canvas的width和style.width的区别
- 灰度、rgb之间的概念