Troubleshooting code for prompt and inputdlg
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
fiona rozario
el 10 de Jun. de 2017
Comentada: fiona rozario
el 10 de Jun. de 2017
The following code works fine for any user input for N:
N = input('Number of pieces to break into ');
rowgroups = diff( round(linspace(0,r,N+1)));
But when I try to use the following code, I get an error:
Undefined function 'plus' for input arguments of type 'cell'.
Error in sharebased_nshares (line 62) rowgroups = diff( round(linspace(0,r,N+1)));
prompt = {'Enter no. of shares:'};
dlg_title = 'Input';
num_lines = 1;
defaultans = {'2'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
N=answer;
rowgroups = diff( round(linspace(0,r,N+1)));
What is going wrong and where?
0 comentarios
Respuesta aceptada
Star Strider
el 10 de Jun. de 2017
You need to convert ‘answer’ to a number:
N=str2double(answer);
That should work with your code.
4 comentarios
Más respuestas (1)
Image Analyst
el 10 de Jun. de 2017
N is a cell so use str2double(). See this robust snippet:
% Ask user for one integer number.
defaultValue = 2;
titleBar = 'Enter an integer value';
userPrompt = 'Enter the integer';
caUserInput = inputdlg(userPrompt, titleBar, 1, {num2str(defaultValue)});
if isempty(caUserInput),return,end; % Bail out if they clicked Cancel.
% Round to nearest integer in case they entered a floating point number.
integerValue = round(str2double(cell2mat(caUserInput)));
% Check for a valid integer.
if isnan(integerValue)
% They didn't enter a number.
% They clicked Cancel, or entered a character, symbols, or something else not allowed.
integerValue = defaultValue;
message = sprintf('I said it had to be an integer.\nTry replacing the user.\nI will use %d and continue.', integerValue);
uiwait(warndlg(message));
end
0 comentarios
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!