对于我们需要在编程课上创建的BMI计算器,我需要确保尺寸和重量的值在一定的数字范围内。 每次程序告诉我只能在使用短路或时比较标量。 然而,经过一些研究后,我发现浮点数也是标量,所以现在我想知道我做错了什么。
这是我现在编写的代码:
weight = input("please enter your weight in kgs: ","s");
str2double(weight)
while isnan(weight)
weight = input("please enter your weight in kgs: ","s");
str2double(weight);
end
height = input("please enter your size in meters: ", "s");
str2double(height)
h = isscalar(size)
w = isscalar(height)
while isnan(height) || height > 2.2 || height < 1.3
hight = input("please enter your size in meters: ","s");
str2double(height);
end
我已经尝试过单独比较两个浮点数,但这也不起作用。 然后我做了一些研究,这也无助于解决问题。 我现在还将变量“size”的名称更改为“height”,但这没有帮助。
这是一个输入/输出示例:
请输入您的体重(公斤):70
ans=
70
请输入您的尺寸(以米为单位):1.87
ans=
1.8700
h=
逻辑
0
w=
逻辑
0
逻辑 AND (&&) 和 OR (||) 运算符的操作数必须可转换为逻辑标量值。使用 ANY 或 ALL 函数将操作数减少为 逻辑标量值。
这里,
height
是一个字符串,一个字符数组(不是标量):
height = input("please enter your size in meters: ", "s");
在这里,您将字符串转换为双精度,但不将结果存储在任何地方。
height
仍然是一个字符数组:
str2double(height)
您可能需要将最后一行替换为
height = str2double(height);
或者,更好的是,从
"s"
调用中删除 input
。 MATLAB 将评估用户输入的内容,因此在您的情况下将返回双精度值(但如果用户输入“[1,1]
”或“'foo'
”,它将返回一个数组或字符串,因此您必须测试为此)。