对于我们在编程课上需要创建的BMI计算器,我需要确保size和weight的值是在一定范围内的数字。每次程序告诉我,当使用短路或时,我只能比较标量。然而,在做了一些研究之后,我发现浮点数也是标量,所以现在我想知道我做错了什么。
下面是我写的代码:
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
字符串
我已经试过比较两个浮动本身,但也没有工作。然后我做了一些研究,这也无助于解决问题。我现在也改变了变量的名称“大小”到“高度”,但这并没有帮助。
下面是一个输入/输出示例:
请输入您的体重(公斤):70
ans =
70
型
请输入您的尺码(单位:米):1.87
ans =
1.8700
型
h =
逻辑
0
w =
逻辑
0
逻辑AND(&&)和OR(||)运算符必须可转换为逻辑标量值。使用ANY或ALL函数将操作数减少为逻辑标量值。
1条答案
按热度按时间ccrfmcuu1#
这里,
height
是一个字符串,一个字符数组(不是标量):字符串
在这里,我们将字符串转换为double,但不将结果存储在任何地方。
height
仍然是一个字符数组:型
您可能需要将最后一行替换为
型
或者,更好的方法是,从
input
调用中删除"s"
。MATLAB将评估用户输入的内容,因此将在您的情况下返回一个双精度型(但如果用户输入“[1,1]
“或“'foo'
“,则将返回一个数组或字符串,因此您必须测试)。