WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

überprüfen ob eine Zahl eingegeben wurde

 

Regina
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 16.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2010, 20:19     Titel: überprüfen ob eine Zahl eingegeben wurde
  Antworten mit Zitat      
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.-]');
if numel(p)<1
       set(handles.text_x_prueffeld,'String','');
   else
    set(handles.text_x_prueffeld,'String','Bitte gültige Zahl für x eingeben!');
   end

 


Herzlichen dank schon mal im voraus!
Liebe Grüsse Regina
Private Nachricht senden Benutzer-Profile anzeigen


ppirokke
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 19.11.10
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 21.12.2010, 22:15     Titel:
  Antworten mit Zitat      
Hi Regina,

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.


Gruß ppirokke
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 21.12.2010, 23:49     Titel:
  Antworten mit Zitat      
Hi,

also wenn es wirklich nur eine Zahl sein soll, ohne Wertebereicheinschränkung, dann versuch mal
Code:

function edit_x_Callback(hObject, eventdata, handles)
if isnan(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...

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.12.2010, 13:15     Titel: Re: überprüfen ob eine Zahl eingegeben wurde
  Antworten mit Zitat      
Hallo Regina,

Zitat:
Bei meinem programm möchte ich gerne einen eingabewert überprüfen, ob es eine zahl ist oder nicht.


Eine Suche im Forum liefert z.B.:
http://www.gomatlab.de/nur-zahleneingabe-t15776.html
http://www.gomatlab.de/edit-eingabe-begrenzen-t10510.html
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Regina
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 16.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2010, 22:26     Titel:
  Antworten mit Zitat      
hallo marco

danke für die antwort. hab den code mal ausprobiert.
wenn ich ein "i" oder "j" eingebe kommt keine Fehlermeldung. weist du warum?

Gibt es nicht eine kleine erweiterung meines Programmcodes das auch mehrere "-" und "." ausgeschlossen werden??

Gruss Regina
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 28.12.2010, 15:57     Titel:
  Antworten mit Zitat      
Hi Regina,

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)
if isnan(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)

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Regina
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 16.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2010, 20:22     Titel:
  Antworten mit Zitat      
hallo marco

es hat super geklapt, herzlichen dank.

lieber gruss
regina
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.