Java BMI/BMR计算器如何添加输入范围校验的if判断语句
BMI计算器非法值校验修改方案
校验逻辑放置位置说明
你需要在获取到用户输入的vikt参数之后、调用计算方法之前插入判断逻辑,只要参数不符合0.5~2.2的区间要求,就跳过计算直接输出错误提示。
这里提供两种可选实现方式:
方案1:输完全部参数后统一校验
适合需要收集全部输入再统一校验的场景,修改步骤:
- 在用户输入完体重、身高、年龄三个参数后,新增if判断
- 把原有的计算、输出结果的代码全部移入if的合法分支
- else分支输出错误提示
核心修改片段:
//Användaren matar in sin data System.out.print("Ange personens vikt (kg): "); double vikt = input.nextDouble(); System.out.print("Ange personens längd (m): "); double längd = input.nextDouble(); System.out.print("Ange personens ålder: "); double ålder = input.nextDouble(); // 新增vikt参数校验逻辑 if (vikt >= 0.5 && vikt <= 2.2) { System.out.println(" "); System.out.println("Beräknat BMI för både män och kvinnor är " + bmi(vikt, längd)); System.out.println("Beräknat BMR för män är: " + kalorier_Män(vikt, längd, ålder)); System.out.println("Beräknat BMR för kvinnor är: "+ kalorier_Kvinnor(vikt, längd, ålder)); System.out.println(" "); } else { System.out.println("nope you did it wrong"); } System.out.print("Fortsätta? (j/n): "); fortsätt = input.next().charAt(0);
方案2:输入体重后立刻校验
适合减少无效输入的场景,体重输入非法时直接提示,不需要再输入身高和年龄:
核心修改片段:
do { //Användaren matar in sin data System.out.print("Ange personens vikt (kg): "); double vikt = input.nextDouble(); // 立刻校验体重合法性 if (vikt < 0.5 || vikt > 2.2) { System.out.println("nope you did it wrong"); System.out.print("Fortsätta? (j/n): "); fortsätt = input.next().charAt(0); // 跳过后续输入和计算,直接进入下一轮循环判断 continue; } // 体重合法才需要输入后续参数 System.out.print("Ange personens längd (m): "); double längd = input.nextDouble(); System.out.print("Ange personens ålder: "); double ålder = input.nextDouble(); // 原有计算输出逻辑不变 System.out.println(" "); System.out.println("Beräknat BMI för både män och kvinnor är " + bmi(vikt, längd)); System.out.println("Beräknat BMR för män är: " + kalorier_Män(vikt, längd, ålder)); System.out.println("Beräknat BMR för kvinnor är: "+ kalorier_Kvinnor(vikt, längd, ålder)); System.out.println(" "); System.out.print("Fortsätta? (j/n): "); fortsätt = input.next().charAt(0); } while (fortsätt != 'n');
完整修改后代码(方案2版本)
import java.util.Scanner; public class BmiBmrKalkylator { public static void main(String[] args) { Scanner input = new Scanner (System.in); // 引导文字 System.out.println("Beräkna ditt BMI"); System.out.print("Tryck j för att starta: " ); char fortsätt = input.next().charAt(0); System.out.println(" "); do { //用户输入数据 System.out.print("Ange personens vikt (kg): "); double vikt = input.nextDouble(); // 体重合法性校验 if (vikt < 0.5 || vikt > 2.2) { System.out.println("nope you did it wrong"); System.out.print("Fortsätta? (j/n): "); fortsätt = input.next().charAt(0); continue; } System.out.print("Ange personens längd (m): "); double längd = input.nextDouble(); System.out.print("Ange personens ålder: "); double ålder = input.nextDouble(); System.out.println(" "); System.out.println("Beräknat BMI för både män och kvinnor är " + bmi(vikt, längd)); System.out.println("Beräknat BMR för män är: " + kalorier_Män(vikt, längd, ålder)); System.out.println("Beräknat BMR för kvinnor är: "+ kalorier_Kvinnor(vikt, längd, ålder)); System.out.println(" "); System.out.print("Fortsätta? (j/n): "); fortsätt = input.next().charAt(0); } while (fortsätt != 'n'); input.close(); } static double bmi(double vikt, double längd){ double bmiMänochKvinnor; bmiMänochKvinnor = (1.3 * vikt) / Math.pow(längd, 2.5); return bmiMänochKvinnor; } static double kalorier_Män (double vikt,double längd,double ålder){ double manBmr; manBmr = (9.99 * vikt) + (6.25 * längd) - (4.92 * ålder) + 5; return manBmr; } static double kalorier_Kvinnor (double vikt,double längd,double ålder){ double kvinnaBmr; kvinnaBmr = (9.99 * vikt) + (6.25 * längd) - (4.92 * ålder) - 161; return kvinnaBmr; } }
内容的提问来源于stack exchange,提问作者Alysia Nonor
相关产品推荐
相关产品推荐

