Input is a valid integer
2 次查看(过去 30 天)
显示 更早的评论
How to check if the value entered by the user is a valid integer and not a negative number(such as -1,-9,-10 etc) or characters/strings(such as a, i,thank you)or special symbols(such as @,* etc) and also that is not equal to 0?
0 个评论
回答(2 个)
DGM
2024-5-31
编辑:DGM
2024-5-31
Assuming the input x is a char vector from input() which represents a numeric scalar:
isvalidnumber('56') % positive scalar integer is okay
isvalidnumber('-56') % not valid (not positive)
isvalidnumber('56.2') % not valid (noninteger)
isvalidnumber('[56 23]') % not valid (nonscalar)
isvalidnumber('asdf') % not valid (non-numeric)
isvalidnumber('56E3') % E-notation is valid (56000 is a positive scalar integer)
function isvalid = isvalidnumber(x)
x = str2double(x); % NaN if text or nonscalar numeric
isvalid = (x > 0) & (mod(x,1) == 0); % true only for positive integers
end
There are probably other ways to approach this, but it's a basic start. If you really want to improve things, take a step back and stop designing around accumulating parameters interactively via input().
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Argument Definitions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!