Verfasst am: 21.12.2010, 20:19
Titel: überprüfen ob eine Zahl eingegeben wurde
Hallo zusammen
Ich hätte eine frage zu einer wertüberprüfungen. Bei meinem programm möchte ich gerne einen eingabewert überprüfen, ob es eine zahl ist oder nicht. weiss jemand wie ich es überprüfen kann das nicht mehrere "." oder "-" eingegeben werden. das ist mein momentaner code:
Code:
function edit_x_Callback(hObject, eventdata, handles)
val=str2double(get(hObject,'String'));
handles.x=val
var=get(hObject,'String');
p=regexp(var,'[^01234567890.-]');
ifnumel(p)<1 set(handles.text_x_prueffeld,'String','');
else set(handles.text_x_prueffeld,'String','Bitte gültige Zahl für x eingeben!');
end
würde es dir evtl. schon reichen, wenn du mit str2num deine Zahl umwandelst und mit dem ebenfalls zurückgegebenen status auf eine gelungene Umwandlung prüfst? Ich gehe mal davon aus, dass - und . nur geprüft werden sollen, da sie in der Zahl vorkommen können.
also wenn es wirklich nur eine Zahl sein soll, ohne Wertebereicheinschränkung, dann versuch mal
Code:
function edit_x_Callback(hObject, eventdata, handles) ifisnan(str2double(get(hObject,'String'))) errordlg('Bitte eine Zahl eingeben!','Falsche Eingabe');
set(hObject,'String','0');
else var = str2double(strrep(get(hObject,'String'),',','.')); % durch strrep ist als dezimaltrennung auch , erlaubt... end
Beachte aber, dass str2double soetwas wie 2^23 nicht akzeptiert 2e2 hingegen schon...
str2num würde auch gehen, allerdings akzeptiert dies auch mehrere Zahlen z.B. [22 23] = str2num('22 23') dafür kannste auch 2^23 eingeben. Einfach mal testen was dir besser gefällt...
da ich momentan kein Matlab zur Hand habe könnte ich mir vorstellen, dass Matlab i & j akzeptiert da es komplexe Zahlen sind. Willst du dieses nicht kannst du natürlch mittels:
Code:
function edit_x_Callback(hObject, eventdata, handles) ifisnan(str2double(get(hObject,'String'))) || ~isreal(str2double(get(hObject,'String'))) errordlg('Bitte eine reelle Zahl eingeben!','Falsche Eingabe');
set(hObject,'String','0');
else var = str2double(strrep(get(hObject,'String'),',','.')); % durch strrep ist als dezimaltrennung auch , erlaubt... end
Falls doch noch die ein oder andere Zahl nicht eingegeben werden darf, solltest du dich vll doch besser mit regexp auseinandersetzen (siehe Jan S links)
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.