Input is a valid integer

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?

回答 (2 件)

Walter Roberson
Walter Roberson 2015 年 10 月 29 日

0 投票

https://www.mathworks.com/matlabcentral/newsreader/view_thread/163080

1 件のコメント

omri dagan
omri dagan 2024 年 5 月 30 日
it's a broken link

サインインしてコメントする。

DGM
DGM 2024 年 5 月 31 日
編集済み: DGM 2024 年 5 月 31 日

0 投票

Assuming the input x is a char vector from input() which represents a numeric scalar:
isvalidnumber('56') % positive scalar integer is okay
ans = logical
1
isvalidnumber('-56') % not valid (not positive)
ans = logical
0
isvalidnumber('56.2') % not valid (noninteger)
ans = logical
0
isvalidnumber('[56 23]') % not valid (nonscalar)
ans = logical
0
isvalidnumber('asdf') % not valid (non-numeric)
ans = logical
0
isvalidnumber('56E3') % E-notation is valid (56000 is a positive scalar integer)
ans = logical
1
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().

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

質問済み:

2015 年 10 月 29 日

編集済み:

DGM
2024 年 5 月 31 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by