matlab 使用标量与短路或

sg3maiej  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(59)

对于我们在编程课上需要创建的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函数将操作数减少为逻辑标量值。

ccrfmcuu

ccrfmcuu1#

这里,height是一个字符串,一个字符数组(不是标量):

height = input("please enter your size in meters: ", "s");

字符串
在这里,我们将字符串转换为double,但不将结果存储在任何地方。height仍然是一个字符数组:

str2double(height)


您可能需要将最后一行替换为

height = str2double(height);


或者,更好的方法是,从input调用中删除"s"。MATLAB将评估用户输入的内容,因此将在您的情况下返回一个双精度型(但如果用户输入“[1,1]“或“'foo'“,则将返回一个数组或字符串,因此您必须测试)。

相关问题