Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
ANSWER: How to check if you wrote string or number
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi there, this might help you out. I made a short code that takes in a number (or string) from a user and returns the number if it sure is a number or 0 if it's a string.
copy and paste in a "script" to try out. Save the script and then test it in comand window.
number = input('Type a number please = ', 's');
% this pice of code can take in both numbers or strings:
number = str2num(number);
%If the string "number" does not represent a valid number or matrix,
str2num(number) returns the empty matrix.
if isempty(number)
answer = 0;
else
answer = daysInMonth(number);
end
disp(answer)
or:
number = input('Type a number please = ', 's');
number = str2num(number);
if isempty(number)
disp('You wrote a text')
else
fprintf(' You wrote the number %2.0f\n ', number)
end
I know this might be a problem for lots of people which they need an answer to. Lets hope it helps
BenDyAsk
5 Kommentare
Walter Roberson
am 22 Sep. 2016
>> number = input('Type a number please = ', 's');
number = str2num(number);
Type a number please = system('ls')
Add-Ons SupportPackages projects
Examples power_V2G_acc.mexmaci64 slprj
You are taking whatever string the user provides and you are executing it.
str2num is coded as very nearly literally
result = eval( [ '[' TheInputString ']' );
so if the user inputs a string that is a valid function call, the function will be executed.
Another example:
>> number = input('Type a number please = ', 's');
number = str2num(number);
Type a number please = pi
>> number
number =
3.14159265358979
How did number get that numeric value when the user entered something that contains no numbers? Answer: because pi is actually a function, and the function was called.
Is this working "as intended" ??
Stephen23
am 22 Sep. 2016
Bearbeitet: Stephen23
am 22 Sep. 2016
Running str2num does not do what the OP thinks, and actually executes the input string. It does not test for string vs. number:
>> str2num('i')
ans = 0 + 1i
>> str2num('exp(3)')
ans = 20.086
>> str2num('mean(+''cheese'')')
ans = 103.50
A much better choice would be str2double.
I am going to close this question because it is misleading, and gives wrong information.
Antworten (0)
Diese Frage ist geschlossen.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!