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

2023-11-21

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

我目前正在使用这个:

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

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

EDIT2:

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))

EDIT

这些测试针对any整数值。要将有效值限制为正整数,请添加num_dice > 0 as in @MajorApus 的回答.

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

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Matlab 中强制用户输入整数的最佳方法 的相关文章

  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • Matlab:2行10列的子图

    如何在 matlab 中绘制 20 幅图像 2 行 10 列 我知道我必须使用 子图 功能 但我对给出的参数感到困惑 我尝试给予 子图 2 10 行索引 列索引 但它似乎不起作用 请帮忙 的前两个参数subplot函数分别给出图中子图的总行
  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e
  • 绘制布朗运动 matlab

    首先 我只想说我不太习惯使用matlab 但我需要一个作业 我应该创建一个 布朗运动 我的代码目前如下所示 clf hold on prompt Ge ett input size input prompt numParticles inp
  • Matlab strcat 不返回字符串?

    imgstr 无法识别 strcat 的输出字符串 homedir C Users images for img 01 bmp 02 bmp 03 bmp imgstr strcat homedir img I imread imgstr
  • MATLAB:图像角坐标和引用元胞数组

    我在比较不同元胞数组中的元素时遇到一些问题 这个问题的背景是我正在使用bwboundariesMATLAB 中的函数可追踪图像的轮廓 该图像是结构横截面 我试图找出整个部分是否具有连续性 即 只有一个轮廓由bwboundaries命令 完成
  • 霍夫变换检测和删除线

    我想使用霍夫变换检测图像中的线条 但是我不想绘制线条 而是想删除原始图像中检测到的每条线条 image imread image jpg image im2bw image BW edge image canny imshow BW fig
  • 在 Python 上显示 Matlab mat 文件中的图像

    我目前正在尝试显示从此下载的 Mat 文件中的图像site http www rctn org bruno sparsenet 这是一个 mat 文件 所以我尝试使用 scipy io loadmat 函数加载它 但我似乎无法绘制图像 我究
  • matlab中优先级队列的实现方法

    matlab中有没有提供minpriorityqueue功能的库 import java util PriorityQueue import java util public class MyQueue Comparator
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • 使用 scipy.io 将 python pandas dataframe 转换为 matlab 结构

    我正在尝试使用 scipy io 将 pandas 数据帧保存到 matlab mat 文件 我有以下内容 array1 np array 1 2 3 array2 np array a b c array3 np array 1 01 2
  • Matlab:如何读取以逗号作为小数分隔符的数字?

    我有很多 数十万 相当大 gt 0 5MB 的文件 其中数据是数字 但以逗号作为小数分隔符 使用像这样的外部工具对我来说是不切实际的sed s g 当分隔符是点时 我只使用textscan fid f f f 但我看不到更改小数点分隔符的选
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • MATLAB;具有 2+ 个/分割图例的饼图 R2017b

    我正在创建一个饼图 理想情况下希望图例水平显示在顶部和 或底部 然而 在几乎所有情况下 这是不可能的 因为图例超出了数字 因此 我理想情况下希望将图例分成两个 或更多 子图例并单独放置它们 我知道这不是 MATLAB 中的内置功能 我使用的
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • Matlab 的 fftn 在多线程下变得更慢?

    我可以访问 12 核机器和一些严重依赖 fftn 的 matlab 代码 我想加快我的代码速度 由于 fft 可以并行化 我认为更多的内核会有所帮助 但我看到的恰恰相反 这是一个例子 X peaks 1028 ncores feature
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m

随机推荐

  • 如何使用导航组件在单个片段上正确添加选项菜单而不破坏“向上行为”

    我在单个片段上添加选项菜单时遇到一些麻烦 因为它破坏了导航 这是我的代码 我有一个活动NoActionBar风格和布局
  • UTF-8 和 JavaScript

    我使用 Javascript 获取使用字符集 UTF8 定义的 HTML 页面中的数据 我的 javascript 方法使用字符集 UTF8 加载 但是当我使用 innerHTML 获取数据时 我遇到了编码问题 例如 工资 我错过了什么吗
  • 哪个更好:

    哪个更好或更方便使用 or 您是否需要 type 属性 如果您使用的是 HTML5 则不需要 否则 是的 HTML 4 01 和 XHTML 1 0 指定type属性为必填项 而 HTML5 将其作为可选属性 默认为text javascr
  • 钻石上的像素坐标

    我得到了一张图像 其中有几颗钻石并排放置 如下图所示 我知道图像上的唯一坐标是顶角 绿色文本 当我点击图像时 我得到了该点的坐标 但我无法得到我所在的钻石 例如我点击红点 我怎么知道x 260 y 179 顶部菱形 蓝色属于左边 ETC 非
  • 静态链接 libstdc++:有什么问题吗?

    我需要将使用 GCC 4 7 的 libstdc 在 Ubuntu 12 10 上构建的 C 应用程序部署到运行 Ubuntu 10 04 的系统 该系统附带了相当旧版本的 libstdc 目前 我正在编译 static libstdc s
  • f# 重复定义

    在 F powerpack 数学提供程序源代码中 我看到了这个 在lapack service netlib fs member this dgemm a matrix b matrix allocate results let c Mat
  • 如何通过 ant 构建脚本编译 .drl 文件

    我是流口水的新手 我想知道是否可以使用某种可以在 Windows 命令行 shell cmd 中输入的命令来编译 drl 文件 我查看了 drools 发行版附带的二进制文件 但我无法找到编译 drl 文件的方法 我对这样的命令感兴趣的原因
  • C# NUnit 的 BDD

    我一直在使用自制的 BDD Spec 扩展在 NUnit 中编写 BDD 样式测试 我想看看每个人的想法 它能增加价值吗 很烂吗 如果是这样为什么 那里有更好的东西吗 这是来源 https github com mjezzi NSpec 我
  • 如何在 Github Flavored Markdown 上的 URL 中使用尖括号?

    我想在 Github Flavor Markdown 的 URL 中使用尖括号 降价 1 Fork it http github com
  • 使用 Castle Windsor WcfFacility 创建客户端端点

    我创建了三个程序集 一个网站 一个 WCF 服务和一个包含服务实现的接口的契约程序集 我想使用 Castle Windsor 在客户端 网站 上为我创建服务 这样我就不必在网站的 web config 中为我希望使用的每个服务提供端点 我想
  • 如何从二进制文件生成 pdf 文件?

    如何从 php5 数据库中检索的二进制文件生成 pdf 文件 它是 Base64 编码的 我刚刚解码了它 但不知道下一步该怎么做 二进制数据很简单实际文件 或者更确切地说该文件的重要内容 只是没有文件名 base64 some base64
  • iOS 中背景图像无法正确显示

    我在网站上使用可平铺的背景图像 该网站在所有桌面浏览器中的浏览效果都很好 但当我在 iPad Mini 运行 iOS 6 1 3 上查看该网站时 背景图像中有条纹 您可以在大多数页面上看到一种模式 即一条看起来不错的线 背景图像的大小 然后
  • 数据集中 2 点之间的最大距离并识别这些点

    我有一个由几个点的 x y z 坐标组成的矩阵 我想找到极值点 即相距最远的两个点 我可以在 matlab 中找到一种方法 但我需要在 Python 中使用它 这是matlab中的代码 A randint 500 3 5 5 D pdist
  • 使用 imaplib 删除 Gmail 中的电子邮件时出现问题

    我尝试从收件箱文件夹中删除邮件 一切正常 但是当我切换到 所有邮件 文件夹时 删除不起作用 expunge 方法返回 OK None 并且消息未被删除 gt gt gt import imaplib gt gt gt server imap
  • MySQL - 如何在邮政编码前面加上“0”?

    在我的 MySQL InnoDB 数据库中 我有想要清理的脏邮政编码数据 干净的邮政编码数据是指我拥有邮政编码的所有 5 位数字 例如 90210 但由于某种原因 我在数据库中注意到 对于以 0 开头的邮政编码 0 已被删除 So 纽约州霍
  • 如何从谷歌日历获取活动详细信息

    当日历中创建新事件时 我成功地将谷歌日历的推送通知发送到我的系统中 推送通知的 POST 正文中没有数据 POST 标头如下 Host gt xxxxxx xxxx com Content Type gt application json
  • 实现 ICloneable 时是否应该提供深度克隆?

    我不清楚MSDN 文档在实现 ICloneable 时我是否应该提供深克隆或浅克隆 首选方案是什么 简短回答 是的 长答案 不要使用 ICloneable 这是因为 Clone 没有定义为浅克隆或深克隆 您应该实现自己的 IClone 接口
  • 两个指针指向同一个地址[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当两个指针指向同一个地址时会发生什么 这会导致安全问题吗 事实本身没问题 但是如果你调用
  • 尝试在空对象引用上调用虚拟方法“void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)”

    我正在尝试使用 Android 材料设计来实现滑动选项卡布局 但它给了我NullPointerException 到目前为止 这是我的代码 MainActivity java public class MainActivity extend
  • 在 Matlab 中强制用户输入整数的最佳方法

    我正在 Matlab 中编写一个简单的程序 并且想知道确保用户输入的值是正确整数的最佳方法 我目前正在使用这个 while num dice lt 1 isempty num dice num dice input Enter the nu