Überprüfen, ob die eingabe auch buchstaben enthält

Status
Nicht offen für weitere Antworten.
C

Coon

Gast
hi !

Ich bin gerade dabei, einen PQ-Formel Rechner zu schreiben.
Das hat soweit auch geklappt, bis ich auf die Idee kam zu überprüfen, ob auch wirklich nur Zahlen eingegeben wurden.

hab dann ein wenig gegoogelt und mir ein paar Befehle zusammengesucht, bis mein code so aussah:

Code:
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;

public class pqformel2 extends Applet implements ActionListener {
  Label lP;
  Label lQ;
  Label lResult;

  Button bPerform;

  TextField tP;
  TextField tQ;
  TextField tResult;

  double dP;
  double dQ;
  double dResult;
  int iIllegal;

  public void init() {
         setLayout(null);

         lP = new Label("P");
         lQ = new Label("Q");
         lResult = new Label("");

         bPerform = new Button("Rechnen");

         tP = new TextField("");
         tQ = new TextField("");
         tResult = new TextField("");

         lP.setBounds(10,10,60,20);
         lQ.setBounds(10,40,60,20);
         lResult.setBounds(10,70,1000,20);

         bPerform.setBounds(10,100,100,20);

         tP.setBounds(80,10,60,20);
         tQ.setBounds(80,40,60,20);
         tResult.setBounds(80,70,60,20);

         add(lP);
         add(lQ);
         add(lResult);
         add(bPerform);
         add(tP);
         add(tQ);


         bPerform.addActionListener(this);
  }

  public void actionPerformed (ActionEvent ereignis) {

         
         for (int pos=0;pos <= (tP.getText().length());pos++) {
              if (Integer.parseInt(tP.getText().substring(pos,pos+1))<47&&Integer.parseInt(tP.getText().substring(pos,pos+1))>58) {

              iIllegal=1;
              }
         }
         if (iIllegal==0) {
             dP = Double.parseDouble(tP.getText());
             dQ = Double.parseDouble(tQ.getText());
             if (dP == 0&&dQ!=0){
                  lResult.setText("P darf nicht 0 sein, da es sonst kein Ergebnis gibt.");
             }
             else {
                  double dPos = -(dP/2)+Math.sqrt(((dP/2)*(dP/2))-dQ);
                  double dNeg = -(dP/2)-Math.sqrt(((dP/2)*(dP/2))-dQ);
                  lResult.setText("n1 = "+String.valueOf(dPos)+"   n2 = "+String.valueOf(dNeg));
             }
         }


  }
}


das kannste hab ich mir so gedacht, das Java für jedes Zeichen den ASCII Wert überprüft und festellt, ob er kleiner als 47 und größer als 58 ist (dazwischen liegen die Zahlen ;-) )

allerdings funzt nun garnix mehr :-(

was hab ich falsch gemacht ?
 
G

Guest

Gast
aber wie mache ich es dann, das es funzt ? gibts statt dem && was für oder ?
 
G

Guest

Gast
sry für den doppelpost, aber ich habs jetz mal so versucht :

Code:
public void actionPerformed (ActionEvent ereignis) {

         iIllegal=0;
         for (int pos=0;pos <= (tP.getText().length());pos++) {
              if (Integer.parseInt(tP.getText().substring(pos,pos+1))<47) {
                  iIllegal=1;
              }
              if (Integer.parseInt(tP.getText().substring(pos,pos+1))>58) {
                  iIllegal=1;
              }
         }
         if (iIllegal==0) {
             dP = Double.parseDouble(tP.getText());
             dQ = Double.parseDouble(tQ.getText());
             if (dP == 0&&dQ!=0){
                  lResult.setText("P darf nicht 0 sein, da es sonst kein Ergebnis gibt.");
             }
             else {
                  double dPos = -(dP/2)+Math.sqrt(((dP/2)*(dP/2))-dQ);
                  double dNeg = -(dP/2)-Math.sqrt(((dP/2)*(dP/2))-dQ);
                  lResult.setText("n1 = "+String.valueOf(dPos)+"   n2 = "+String.valueOf(dNeg));
             }
         }


  }
}


aber es funzt leider immeroch nicht :-(

das compilieren klappt zwar, baer ich bekomme bei Buttondruck immer diese Meldungen:

Exception in thread "AWT-EventQueue-1" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.substring(String.java:1935)
at pqformel2.actionPerformed(pqformel2.java:68)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
 
S

SlaterB

Gast
zunächst mal solltest du sowas wie
Integer.parseInt(tP.getText().substring(pos,pos+1))
nicht 2x hintereinander schreiben

->
Code:
for (int pos=0;pos <= (tP.getText().length());pos++) {
    int substringNumber = Integer.parseInt(tP.getText().substring(pos,pos+1));
    if (substringNumber <47 ||substringNumber > 58) {
        iIllegal=1;
    }
 }

so, und dann ist deine Schleife zu eifrig,
bei einem String der Länge 5 führt substring(5,6) zu einem Fehler,
schaue dir dazu die Doku von String und der entsprechenden Operation an,
dann weißt du besser, wie du die Parameter verwenden musst

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#substring(int,%20int)


dann erkennt man wahrscheinlich auch, dass du bisher nur Substrings der Länge 1 herausschneidest,
eine Zahl mit einer Ziffer ist IMMER < 47
 

Marco13

Top Contributor
So wie es "UND" als && gibt, gibt es auch "ODER" als ||

In diesem Fall ist das aber wurscht. Diese Abfrage, ob der String nur Ziffern enthält, macht keinen Sinn bei einer Eingabe wie
-3
oder
3.0f
oder
1.5e-2
(was ja alles gültige double-Werte sind).

Das einfachste wäre, bei dem parseDouble eine eventuelle Exception zu fangen
Code:
    try
    {
             dP = Double.parseDouble(tP.getText());
             dQ = Double.parseDouble(tQ.getText());
    } 
    catch (NumberFormalException e)
    {
        System.out.println("Was hastn da fürn Mist eingetippt?");
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
C Problem mit Überprüfen einer Eingabe Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
J Überprüfen ob ein Fenster offen ist? Java Basics - Anfänger-Themen 8
Naxon89 Threads Android AysncTask => Überprüfen, ob ein Ergebniss schon vorliegt Java Basics - Anfänger-Themen 5
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
C Überprüfen eines Queltextes auf Syntax-Fehler und Laufzeitfehler Java Basics - Anfänger-Themen 2
P Überprüfen ob Mausklick auf Linie ist? Java Basics - Anfänger-Themen 6
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
J Methoden Überprüfen ob Objekt bereits erstellt wurde Java Basics - Anfänger-Themen 2
J Überprüfen ob String eine Zahl ist Java Basics - Anfänger-Themen 2
T Überprüfen, ob Objekt gelöscht wurde Java Basics - Anfänger-Themen 1
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
O Überprüfen ob eine Methode ausgeführt wurde Java Basics - Anfänger-Themen 10
C Überprüfen auf Palindrom Java Basics - Anfänger-Themen 12
B Überprüfen von Strings schlägt fehl Java Basics - Anfänger-Themen 5
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
C Überprüfen, ob Timer läuft Java Basics - Anfänger-Themen 3
S Überprüfen auf Permutation Java Basics - Anfänger-Themen 4
K Überprüfen ob Datei vorhanden Java Basics - Anfänger-Themen 2
G Überprüfen ob einen Array einen Value enthält Java Basics - Anfänger-Themen 13
P Überprüfen, ob String Zeichenfolge enthält Java Basics - Anfänger-Themen 4
T Überprüfen, ob Array Elemente hat Java Basics - Anfänger-Themen 22
I Überprüfen eines Passwortes Java Basics - Anfänger-Themen 5
J Überprüfen ob Leerzeile im String[][] array Java Basics - Anfänger-Themen 2
N Überprüfen ob ein Label angeklickt wurde Java Basics - Anfänger-Themen 3
P Methode zum Überprüfen ob Datei verwendet wird? Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
G Überprüfen ob es ein Link existiert Java Basics - Anfänger-Themen 3
S Überprüfen, ob Tabelle existiert Java Basics - Anfänger-Themen 5
M Überprüfen ob die eingaben in einem JTextField eine Zahl ist Java Basics - Anfänger-Themen 5
H Überprüfen ob Request mit enctype=multipart/form-data Java Basics - Anfänger-Themen 2
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben