前言

(当前文章仅说明做了这个 身材计算 简洁版。)

为了参加比赛 码上掘金编程后端挑战赛 (juejin.cn)... 我选择了做一个简洁版的身材计算...

效果展示

code - juejin

地址:https://code.juejin.cn/pen/7176959500325224509

完整代码

代码比较简单,也有注释,就不再详细做介绍啦。


import java.util.Scanner;public class Main extends Common {public static void main(String[] args) {// 身体健康计算情况// 开始start();boolean flag = true;Person person = new Person();while (flag) {showRule();String inText = in();while (inText == null || inText == "") {show("输入错误,请检查是否有输入。");inText = in();}switch (inText) {case "0":show("欢迎下次光临南方者小测!");flag = false;break;case "1":person.inName(); // 输入名字(如:南方者)person.inSex(); // 输入性别person.inAge(); // 输入年龄person.inHeight(); // 输入身高person.inWeight(); // 输入体重person.inBust(); // 输入胸围person.inWaist(); // 输入腰围person.inHip(); // 输入臀围break;case "2": // 显示`BMI`计算公式showBMI();break;case "3": // 计算`BMI`值person.countBMI();break;case "4": // 显示`体脂率值`计算公式showBF();break;case "5": // 计算`体脂率值`person.countBF();break;case "6":person.display();break;default:show("输入错误,请检查是否有输入。");}}}public static void start() {show("********************************");show("计算身体健康情况 - by nanfangzhe");show("---------------------------------");show("说明:");show("1. 输入的参数值越多,计算标准越多。");show("2. 根据提示进入下一步。");show("(注:仅靠简单数据计算出的结果,都有可能的误差在8%以内;请以医院医生数据为标准。)");show("---------------------------------");}/*** 显示规则*/public static void showRule() {show("---------------------------------");show("输入提示:0 退出;1 输入/修改参数;2 显示`BMI`计算公式;\n     3计算`BMI`值;4 显示`体脂率值`计算公式;5 计算`体脂率值`;6 输出个人情况;");show("---------------------------------");}/*** 体脂率情况*/public static void showBF() {show("********************************");show("计算体脂率:1.2×BMI+0.23×年龄-5.4-10.8×性别(男1,女0)");show("---------------------------------");show("丨 类型 丨   体脂率范围");show("丨  男  丨   15%~18%");show("丨  女  丨   20%~30%");show("---------------------------------");}/*** 三围*/public static void show3Point() {show("********************************");show("标准三围计算");show("-----------------------------------");show("丨 类型 丨     男    丨       女       ");show("丨 胸围 丨 身高×0.61 丨 身高×0.61×0.9  ");show("丨 腰围 丨 身高×0.42 丨 身高×0.42×0.89 ");show("丨 臀围 丨 身高×0.64 丨 身高×0.64×1.02 ");show("-----------------------------------");}public static void showBMI() {show("********************************");show("BMI 中国标准(计算公式:BMI = 体重(kg)/ 身高的平方(m)");show("---------------------------------");show("丨 分类 丨   BMI 范围     ");show("丨 偏瘦 丨   <= 18.4     ");show("丨 正常 丨 18.5 ~ 23.9  ");show("丨 过重 丨 24.0 ~ 27.9   ");show("丨 肥胖 丨   >= 28.0     ");show("---------------------------------");}}/*** 对应用户的类*/
class Person extends Common {static String notInputText = "(待输入)";String name = "你"; // 姓名 默认称呼 “你”int age; // 年龄int sex = -1; // 性别(1男 0女)float height; // 体重float weight; // 身高float bmi; // BMI值float bust; // 胸围float waist; // 腰围float hip; // 臀围float canonBust; // 标准胸围float canonWaist; // 标准腰围float canonHip; // 标准臀围float bf; // 体脂率String text = "暂无";public void inName() {show("输入姓名");this.name = in();}public void inAge() {show("输入年龄");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式:整数;如:18岁,输入18(多余小数会自动去掉)");str = in();}try {float f = Float.parseFloat(str);this.age = (int) f;} catch (Exception e) {show("输入错误,请重试。");this.inAge();}}public void inSex() {show("输入性别(男1 女0 其他为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式:整数;男1 女0");str = in();}try {float f = Float.parseFloat(str);if (f == 0 || f == 1) {this.sex = (int) f;}} catch (Exception e) {show("输入错误,请重试。");this.inSex();}}public void inHeight() {show("输入身高(输入0为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式为:数字;例如身高184cm,输入184)");str = in();}try {if (isZero(str)) {// 0为跳过return;}this.height = Float.parseFloat(str);} catch (Exception e) {show("输入错误,请重试。");this.inHeight();}}public void inWeight() {show("输入体重(输入0为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式为:数字;例如体重90.2kg,输入90.2)");str = in();}try {if (isZero(str)) {// 0为跳过return;}this.weight = Float.parseFloat(str);} catch (Exception e) {show("输入错误,请重试。");this.inWeight();}}public void inBust() {show("输入胸围(输入0为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式为:数字;例如胸围37.5,输入37.5)");str = in();}try {if (isZero(str)) {return;}this.bust = Float.parseFloat(str);} catch (Exception e) {show("输入错误,请重试。");this.inBust();}}public void inWaist() {show("输入腰围(输入0为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式为:数字;例如腰围50.5,输入50.5)");str = in();}try {if (isZero(str)) {return;}this.waist = Float.parseFloat(str);} catch (Exception e) {this.inWaist();show("输入错误,请重试。");}}public void inHip() {show("输入臀围(输入0为跳过)");String str = in();while (!isNumber(str)) {show("输入格式错误,请检查。(格式为:数字;例如臀围50.5,输入50.5)");str = in();}try {if (isZero(str)) {return;}this.hip = Float.parseFloat(str);} catch (Exception e) {this.inHip();show("输入错误,请重试。");}}/*** 计算 BMI*/public void countBMI() {if (this.weight == 0 || this.weight < 1 || this.height < 1) {show("请检查当前的身高和体重是否有值。(计算 BMI 失败!");return;}this.bmi = this.weight / (this.height * this.height) * 100 * 100;  // 身高是以米为单位(因此,乘上两个100)show("计算成功!你的BMI值为:" + this.bmi);}/*** 计算标准三围*/public void count3Point() {if (this.height == 0 || this.height < 1 || (this.sex != 0 && this.sex != 1)) {show("请检查当前的身高和性别是否有值。(计算标准三围失败!");return;}this.canonBust = this.height * 0.61f;this.canonWaist = this.height * 0.42f;this.canonHip = this.height * 0.64f;// 如果是女性,需要乘上对应的参数if (this.sex == 0) {this.canonBust *= 0.9f;this.canonWaist *= 0.89f;this.canonHip *= 1.02f;}}/*** 计算体脂率*/public void countBF() {if (this.bmi == 0 || this.age == 0 || (this.sex != 0 && this.sex != 1)) {show("请检查当前的身高、体重、年龄、性别是否有值。(计算 体脂率 失败!");return;}this.bf = this.bmi * 1.2f + 0.23f * this.age - 5.4f - 10.8f * this.sex;show("计算成功!你的体脂率值为:" + this.bf);}public void display() {
//        countBMI();
//        count3Point();
//        countBF();// 输出身体情况String ageStr = "" + (this.age == 0 ? notInputText : this.age);String sexStr = this.sex == -1 ? notInputText : (this.sex == 1 ? "男" : "女");String heightStr = this.height == 0 ? notInputText : (this.height + "cm");String weightStr = this.weight == 0 ? notInputText : (this.weight + "kg");String bmiStr = this.bmi == 0 ? notInputText : this.bmi + "";String bfStr = this.bf == 0 ? notInputText : this.bf + "";show(this.name + "的身体情况");show("---------------------------------");show("丨  类型  丨   值");show("---------------------------------");show("丨  年龄  丨   " + ageStr);show("丨  性别  丨   " + sexStr);show("丨  身高  丨   " + heightStr);show("丨  体重  丨   " + weightStr);show("丨  BMI   丨   " + bmiStr);show("丨  体脂率 丨   " + bfStr);show("丨  最终建议:  " + this.text);show("---------------------------------");}public boolean isNumber(String str) {String regex = "\d+(.\d+)?";return str.matches(regex);}public static boolean isZero(String str) {return Float.parseFloat(str) == 0;}
}class Common {/*** 仅为了方便输出** @param str*/public static void show(String str) {System.out.println(str);}/*** 输入** @return*/public static String in() {Scanner scanner = new Scanner(System.in);String next = scanner.next();while (next == null || next.isEmpty() || next.trim().isEmpty()) {show("输入有误,请重新输入。");next = scanner.next();}return next;}
}

【Java】做了个 Java 简洁版身材计算相关推荐

  1. java做飞机大战_Java+swing版飞机大战

    Java小游戏实训--飞机大战 一.实验目的 使用Java+swing实现飞机大战小游戏 二.实验要求 1.掌握Java的基本语法. 2.掌握面向对象的编程思想. 3.掌握利用swing布局游戏界面的 ...

  2. java做mp3_用java编写MP3播放器

    展开全部 作业其实还是自己写的好.要用到JMF包啊,到网上下载一个JMF包,照着说明安装上. 以下是我写e68a84e8a2ad62616964757a686964616f31333332643336 ...

  3. Java多线程下载器(简洁版)

    Java多线程下载器 https://github.com/rawchen/JDownloader/archive/refs/heads/master.zip 五一无聊搞出来的,虽然已存在IDM.XD ...

  4. Java项目命名规范(简洁版)——高薪必看

    作为一个优秀的项目经理或项目带头人,必须养成良好优秀的项目命名规则和习惯.接下来把查到的资料整理一下,实际上,在很多项目中,也是遵循以下的规则. 一.项目名 全部小写,比如cms.workdesk,j ...

  5. 实现用java做一个简易版《羊了个羊》小游戏(附源代码)

    该项目是跟着这个b站视频一步一步写出来的,初学java有些地方我看不是很明白,但是讲解很仔细,大家可以看原视频,我没有添加背景音乐和背景图片,做出来的效果也勉勉强强. 代码已经上传到github上了, ...

  6. 由浅入深学java iso_由浅入深学Java:基础、进阶与必做260题 PDF扫描版[47MB]

    由浅入深学Java:基础.进阶与必做260题讲解了Java方方面面的知识,全书共分为4篇共28章,第1篇从最基本的JDK安装讲起,包括基本语法与数据类型.数组.字符串.程序控制语句.面向对象编程.继承 ...

  7. 用JAVA 做一个简易版的坦克大战(只实现基本功能)

    不太会写文章,只是为了记录自己做过的东西 文章目录 前言 一.大概思路 二.主要代码 1.Tank.java 2.Shot.java 3. Mypanel.java 4.Hero.java 5.Ene ...

  8. Java面试自用简洁版

    目录 一.Java基础 1.编译型与解释型 2.基本数据类型 3.==与equals 4.浅拷贝.深拷贝.引用拷贝 5.`StringBuilder` 与 `StringBuffer` 6.接口与抽象 ...

  9. java贪吃蛇教程_用Java做的贪吃蛇,简单版......

    效果图片: : 话不多说,上代码: 一共三个类: ① public class Body { int x; int y; public Body(int x, int y) { this.x = x; ...

最新文章

  1. 在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别
  2. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
  3. 程序员编码时都戴耳机?到底在听什么?
  4. java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】
  5. ImageLoader must be init with configuration before using 错误解决方法
  6. 在不使用{}时,else执行到哪里结束
  7. 关于使用类成员函数作为回调的方法
  8. 一千五百个优雅的中国女孩的名字
  9. LIO-SAM探秘第三章之代码解析(三) --- mapOptmization.cpp (1)
  10. java名字自动生成_[java]自动生成指定长度的英文名字
  11. FC光钎通道交换机,同行性价比超高
  12. php注入过程详解,PHP注入代码详解
  13. python行业中性_【量化课堂】因子研究系列之四 -- 市值与行业的中性化
  14. 《大西洋月刊》2014-2020年电子版合集| The Atlantic
  15. 字符串编码(ASCII, GBK, ANSI, Unicode(‘\u‘), UTF-8编码)
  16. jmeter前后置处理器
  17. 【全国数据】八大植被区划矢量数据(带坐标)
  18. 【Blender】学习一下
  19. 勒索病毒(永恒之蓝)
  20. java定时14点30分_单机定时任务的四种基本实现方式

热门文章

  1. win8.1/win10 UEFI + GPT 安装(测试机型:华硕S56CM)
  2. 长江后浪推前浪,UnityWebRequest替代WWW
  3. 工作两年,靠BIG佬的Java面试宝典,跳槽到京东,月薪直涨10K
  4. linux minimal bash,Minimal BASH-like line editingis supported.解决方法
  5. 农产品追溯管理软件开发
  6. 如何解决旧版本的node和npm卸载不干净导致的用homebrew安装新版本过程中出现的问题
  7. 深入浅出,十年老司机告诉你移动直播如何秒开优化
  8. linux用ftp上传文件
  9. CSP认证 202203-1 未初始化警告
  10. Advanced Download Manager Pro安卓手机下载工具