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üfe Eingabe ob eine Zahl oder Buchstabe.

 

Serenum
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 24.06.17
Wohnort: ---
Version: R2017a
     Beitrag Verfasst am: 08.07.2017, 02:22     Titel: Überprüfe Eingabe ob eine Zahl oder Buchstabe.
  Antworten mit Zitat      
Hallo alle zusammen,

brauche kurz Hilfe. Ich muss den Code so schreiben, dass er die Eingabe überprüft.

Also:

- Überprüfe Eingabe ob eine Zahl oder Buchstabe ist,
- wenn Zahl, dann weiter zur nächsten Eingabe,
- wenn Buchstabe, dann gebe Fehlermeldung und kehre zurück zur erneuten Eingabe.

Mein Ansatz ist folgender:

Code:
x1=input('Eingabe: X-Wert des Punktes A, x1= ');   % Zuweisung eines Wertes
if x1=NaN
  disp('Eingabe ist keine Zahl, es sind nur Zahlen erlaubt');
else
  disp('Zahl');
end
y1=input('Eingabe: Y-Wert des Punktes A, y1= ');   % Zuweisung eines Wertes
if y1=NaN
  disp('Eingabe ist keine Zahl, es sind nur Zahlen erlaubt');
else
  disp('Zahl');
end


Aber irgendwie funktioniert das nicht, muss aber auch dazu sagen, bin echt ein Anfänger.

Hat jemand eventuell ein Tipp?

Gruß Serenum.
Private Nachricht senden Benutzer-Profile anzeigen


Serenum
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 24.06.17
Wohnort: ---
Version: R2017a
     Beitrag Verfasst am: 11.07.2017, 23:51     Titel:
  Antworten mit Zitat      
Ein anderer Ansatz, ist besser wie der zuvor, aber irgendwas stimmt nicht.

Code:
x1=input('Eingabe: X-Wert des Punktes A, x1= ');
   if x1 == char
   disp ('Die Eingabe ist unzulässig!')
      else
      x1=input('Eingabe: X-Wert des Punktes A, x1= ');
end
y1=input('Eingabe: Y-Wert des Punktes A, y1= ');
   if y1 == char
   disp ('Die Eingabe ist unzulässig!')
      else
      x1=input('Eingabe: X-Wert des Punktes A, x1= ');
end


Hat jemand ein Tipp?
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: 12.07.2017, 19:38     Titel: Re: Überprüfe Eingabe ob eine Zahl oder Buchstabe.
  Antworten mit Zitat      
Hallo Serenum,

Vergleiche mit NaN sind immer FALSE. Das ist die Definition von NaNs:
Code:
x = NaN
x == x   % FALSE!!!


input(prompt) liefert immer eine Zahl zurück, selbst wenn Du "sin(3)" eingibst. Wenn Du aber prüfen willst, ob ein String eingegeben wurde, musst Du die Eingabe von Strings zunächst erlauben mit dem 's' Flag:
Code:
x1 = input('Eingabe: X-Wert des Punktes A, x1= ', 's');

Danach wird die Eingabe mit str2double umgewandelt und dann per isnan getestet.

"x1 == char" funktioniert nicht, da char ein Matlab-Befehl ist. Er wandelt das Argument in den Typ "char" um:
Code:

Folglich kann man die Zahl (x1 nach input ) nicht direkt damit vergleichen. Der Befehl ischar(x1) würde eher helfen, aber wie gesagt liefert input(prompt) immer eine Zahl zurück. input(prompt, 's') liefert zwar einen String, aber Du möchtest nicht den Typ der Variablen untersuchen, sondern den Inhalt.

Versuche es mal mit den gezeigten Befehlen. Ich möchte keine Lösung posten, wenn es eine Hausaufgabe ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Serenum
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 24.06.17
Wohnort: ---
Version: R2017a
     Beitrag Verfasst am: 13.07.2017, 13:09     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Hilfe. Wie du es wahrscheinlich gemerkt hast, ist das ja für meine größere Aufgabe. Ich habe es jetzt so realisiert. Aber so richtig läuft es nicht. Ich poste den ganzen Code in dem anderen Beitrag. Was ich so da angestellt habe. Vielleicht hat jemand eine Idee, was da nicht so richtig funktioniert.

Code:
flag = 0;
while flag == 0
    x1=input('Eingabe: X-Wert des Punktes A, x1= ','s');
    x1_double = str2double(x1);
    if ~isfinite(x1_double)
        disp ('Die Eingabe ist unzulässig!')
    else
        flag = 1;
    end
end
flag = 0;
while flag == 0
    y1=input('Eingabe: X-Wert des Punktes A, y1= ','s');
    y1_double = str2double(y1);
    if ~isfinite(y1_double)
        disp ('Die Eingabe ist unzulässig!')
    else
        flag = 1;
    end
end


Ich habe auch ein wenig anderen Ansatz, aber der läuft auch nicht richtig.

Code:
x1=input('Eingabe: X-Wert des Punktes A, x1= ','s');
while (isnan(str2double(x1)))
    disp ('Die Eingabe ist unzulässig! Es sind nur Zahlen erlaubt...')
    x1=input('Eingabe: X-Wert des Punktes A, x1= ','s');
end
y1=input('Eingabe: X-Wert des Punktes A, y1= ','s');
while (isnan(str2double(y1)))
    disp ('Die Eingabe ist unzulässig! Es sind nur Zahlen erlaubt...')
    y1=input('Eingabe: X-Wert des Punktes A, y1= ','s');
end


Gruß Serenum.

Zuletzt bearbeitet von Serenum am 13.07.2017, 13:14, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Serenum
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 24.06.17
Wohnort: ---
Version: R2017a
     Beitrag Verfasst am: 13.07.2017, 13:14     Titel:
  Antworten mit Zitat      
Aber an sich finde ich, ist das Problem dank Jan gelöst. Nochmal vielen Dank.

Gruß Serenum.
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.