提问人:Hauke Jakubowski 提问时间:11/17/2023 最后编辑:Cris LuengoHauke Jakubowski 更新时间:11/18/2023 访问量:31
使用具有短路或
using scalars with short-circuiting or
问:
对于我们需要在编程课中创建的 BMI 计算器,我需要确保大小和重量的值与一定范围内的数字无关。 每次程序告诉我,我只能在使用短路或时比较标量。 然而,在做了一些 reseaarch 之后,我发现浮点也是标量,所以现在我想知道我做错了什么。
这里有我现在写的代码:
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 函数将操作数减少到 逻辑标量值。
答:
1赞
Cris Luengo
11/17/2023
#1
这里是一个字符串,一个字符数组(不是标量):height
height = input("please enter your size in meters: ", "s");
在这里,您将字符串转换为双精度,但不会将结果存储在任何地方。 仍然是一个字符数组:height
str2double(height)
您可能希望将最后一行替换为
height = str2double(height);
或者,更好的是,从通话中删除。MATLAB 将评估用户键入的内容,因此在您的情况下将返回双精度值(但如果用户键入 “” 或 “”,它将返回一个数组或字符串,因此您必须对此进行测试)。"s"
input
[1,1]
'foo'
上一个:Matlab:连接组件分析
评论
size
是一个非常常用的内置函数,使用不同的变量名称。您收到的实际逐字错误消息是什么?请您编辑您的问题以包含它,以及您正在测试的一些示例输入