gpt4 book ai didi

matlab - 强制用户在 Matlab 中输入整数的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:12 26 4
gpt4 key购买 nike

我正在用 Matlab 编写一个简单的程序,想知道确保用户输入的值是正确整数的最佳方法。

我目前正在使用这个:

while((num_dice < 1) || isempty(num_dice))
num_dice = input('Enter the number of dice to roll: ');
end

但是我真的知道一定有更好的方法,因为这并不总是有效。我还想在 try catch block 中添加错误检查。我是 Matlab 的新手,所以对此的任何输入都会很棒。

编辑 2:

try
while(~isinteger(num_dice) || (num_dice < 1))
num_dice = sscanf(input('Enter the number of dice to roll: ', 's'), '%d');
end

while(~isinteger(faces) || (faces < 1))
faces = sscanf(input('Enter the number of faces each die has: ', 's'), '%d');
end

while(~isinteger(rolls) || (rolls < 1))
rolls = sscanf(input('Enter the number of trials: ', 's'), '%d');
end
catch
disp('Invalid number!')
end

这似乎有效。这有什么明显的错误吗? isinteger 由接受的答案定义

最佳答案

以下内容可以直接在您的代码中使用,并检查非整数输入,包括空值、无限值和虚值:

isInteger = ~isempty(num_dice) ...
&& isnumeric(num_dice) ...
&& isreal(num_dice) ...
&& isfinite(num_dice) ...
&& (num_dice == fix(num_dice));

以上仅适用于标量输入。要测试多维数组是否仅包含整数,您可以使用:

isInteger = ~isempty(x) ...
&& isnumeric(x) ...
&& isreal(x) ...
&& all(isfinite(x)) ...
&& all(x == fix(x))

编辑

这些测试任何 整数值。要将有效值限制为正整数,请添加 num_dice > 0,如 @MajorApus's answer 中所示.

您可以使用上面的代码通过循环强制用户输入一个整数,直到他们屈服于您的要求:

while ~(~isempty(num_dice) ...
&& isnumeric(num_dice) ...
&& isreal(num_dice) ...
&& isfinite(num_dice) ...
&& (num_dice == fix(num_dice)) ...
&& (num_dice > 0))
num_dice = input('Enter the number of dice to roll: ');
end

关于matlab - 强制用户在 Matlab 中输入整数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com