Input is a valid integer

9 ビュー (過去 30 日間)
Pavithra Naidu
Pavithra Naidu 2015 年 10 月 29 日
編集済み: DGM 2024 年 5 月 31 日
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 日
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 日
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().

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by