Trouble is... if you've not spotted... y is the value entered in the function (at the top of the question). So if y in the poly_input(y) is blank, then the message appears!
How do I get my code to recognise an empty function input?
20 ビュー (過去 30 日間)
古いコメントを表示
function P = poly_input(y)
while
if isempty(y) == 1
y = input('Invalid, no value entered. Enter a value: ', 's');
end
end
end
Basically, i'd like for a re-entry of number message to appear if no value is entered for y!
Please and thanks!
4 件のコメント
Image Analyst
2013 年 4 月 7 日
編集済み: Image Analyst
2013 年 4 月 7 日
See my comment about how to handle nargin (number of input arguments) being zero.
回答 (3 件)
Wayne King
2013 年 4 月 7 日
isempty() should work
y = input('What is your favorite color? ','s');
if isempty(y)
y = input('Invalid, no value entered. Enter a value: ', 's');
end
0 件のコメント
Image Analyst
2013 年 4 月 7 日
Try this:
while true
% Ask user for a number.
defaultValue = 45;
titleBar = 'Enter a value';
userPrompt = 'Enter the number ';
caUserInput = inputdlg(userPrompt, titleBar, 1, {num2str(defaultValue)});
if isempty(caUserInput) % Doesn't work. Not empty if user input is null.
return;
end; % Bail out if they clicked Cancel.
numericalValue = str2double(cell2mat(caUserInput));
% Check for a valid integer.
if isnan(numericalValue)
% They didn't enter a number.
% They clicked Cancel, didn't enter anything
% or entered a character, symbols, or something else not allowed.
message = sprintf('I said it had to be a number.\nTry again.');
uiwait(warndlg(message));
else
break;
end
end
3 件のコメント
Matt Butts
2016 年 5 月 19 日
If I'm not mistaken, this will also require a modification to the function definition:
function P = poly_input(varargin)
if nargin < 1
y = input('Invalid, no value entered. Enter a value: ', 's');
else
y = varargin{1};
end
Steven Lord
2016 年 5 月 19 日
Nope. This works just fine. [Whether it's preferred or not is a different question. Personally I'd probably have poly_input use narginchk to throw an error if you didn't call it with 1 input.]
function P = poly_input(y)
if nargin < 1
y = input('Enter a value for y: ');
end
P = [y 0];
Call it like this and you will be prompted to enter a value.
P = poly_input()
Garret Mans
2019 年 5 月 23 日
I know I'm only a few years late to this thread, but I'm confused why this question got so overcomplicated.
You just need the input and an initial while loop to catch the empty input. Maybe theres something I'm missing but as far as the question asked, this solves the problem just fine:
function gimmiStuff(y)
while isempty(y)
y = input('You gave me empty stuff. Gimmi stuff: ');
end
% Continue with function
.
.
.
end
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!