如何在Matlab中正确使用while 1循环实现BMI计算器重复输入功能
问题解答
直接导致程序运行一次就退出的错误
你在单次BMI计算逻辑的末尾加了break语句,只要完成一次计算就会无条件执行该语句跳出while循环,这是程序直接结束的核心原因,按你的需求直接删除该行break即可。
其他需要修正的语法/逻辑错误
while 1后缺少Matlab语法要求的冒号,正确写法为while 1:- 输入和判断的顺序完全颠倒:你先判断
Weight > 0 && Height > 0再执行输入操作,第一次运行时两个变量尚未定义会直接报错,应该先执行输入语句获取用户输入的数值,再判断数值是否合法。 - 超重区间的判断条件写错:
elseif (BMI<=25) && (BMI<=29.9)需要改为elseif (BMI>=25) && (BMI<=29.9),否则会出现逻辑判断冲突。 else后不允许加判断条件:你写的else (BMI>=30)不符合Matlab语法,要么删除后面的判断条件直接用else,要么改为elseif (BMI>=30)。
修正后的参考代码
while 1 Weight = input('Please Enter Your Weight In kg: '); Height = input('Please Enter Your Height In m : '); if (Weight > 0 && Height > 0) BMI = Weight/(Height^2); if (BMI<=18.5) disp(['Health condition: THIN. Your BMI is ', num2str(BMI)]); elseif (BMI>=18.6) && (BMI<=24.9) disp(['Health condition: HEALTHY. Your BMI is ', num2str(BMI)]); elseif (BMI>=25) && (BMI<=29.9) disp(['Health condition: OVERWEIGHT. Your BMI is ', num2str(BMI)]); else disp(['Health condition: OBESE. Your BMI is ', num2str(BMI)]); end else disp('输入的体重、身高必须为正数,请重新输入'); end end
内容的提问来源于stack exchange,提问作者Findy
相关产品推荐
相关产品推荐

