Prob mit java.util.regex.matches-String wird nicht erkannt?

Status
Nicht offen für weitere Antworten.
K

KarlKralle

Gast
Hallo!
Nach stundenlangem rumprobieren komme ich einfach nicht weiter.
und zwar bin ich dabei für eine Praktikumsaufgabe für die FH ein Programm zu schreiben:
Man soll einen 12stelligen String eingeben.
Ist der String nicht zwölf stellen lang soll das Programm abbrechen.
An erster Position soll im String ein P ein V ein K oder ein M stehen-wenn nicht erfolgt wieder ein abbruch
Die restlichen stellen sollen nur mit zahlen gefüllt sein -wenn nicht ... Abbruch.
Dann erfolgt eine Ausgabe die den String "entschlüsselt"

So weit so gut...
Ich habe es soweit hingekriegt, dass wenn man was anderes als ein P,V,K oder M eingibt das programm abbicht und ausgibt "keine korrekte Ersatzteilbezeichnung"
Ebenso klappt es wenn der String keine 12 zeichen lang ist.
Aber wenn ich vom String die zahlen in einen nueen kopiere und prüfe ob der neue zahlenstring was anderes als Zahlen enthält und das zutrifft will er das Programm einfach nicht abbrechen... sondern gibt das was ich nicht will aus "Ersatzteilbezeichnung korrekt."
Ich hab schon probiert das nur der zahlenstring abgefragt wird oder das er schon abbrechen soll sobald im zahlenstring ein p auftaucht aber das macht er auch nicht.
Irgendwas stimmt da wohl mit dem string nicht aber ich weis nicht was!?
hab auch schon den zahlenstring durch System.out.println ausgeben lassen um zu gucken ob da wirklich nur zahlen drinstehen was auch stimmt.

Das ist eines meiner ersten JAVA programme daher tippe ich auf irgendeinen "dummen" anfängerfehler.
Vielleicht liegt es auch an den if-Anweisungen?
Hoffe ich hab mich verständlich ausgedrückt und ihr könnt mir weiterhelfen.
Vielen Dank schonmal im vorraus...


Code:
import java.util.regex.*;
import javax.swing.*;


class lagerverwaltung

{
  static boolean checkString(String s)    //Ersatzteilbezeichnung korrekt?  Part Number correct?
  {
    String zahlen = s.substring(1);       // string wird aufgeteilt. string partition
    String gtmp = s.substring(0, 1);
    String geraetestring = gtmp.toUpperCase(); // geraetestring in Uppercase
    if (s.length() != 12)                 // if stringlength != 12 return false . incorrect String
    {
      return false;
    }
    if ((zahlen.matches("[^0-9]")) || (geraetestring.matches("[^PVMK]"))) // if zahlen contains no! numbers OR geraetestring contains others than PVM or K return false
    {
      return false;
    }
    return true;
  }

  static void findTool(String s) //output
  {
    String gtmp = s.substring(0, 1);
    String geraetestring = gtmp.toUpperCase();
    String ersatzteil = s.substring(1, 4);
    String regalreihe = s.substring(4, 6);
    String regalnr = s.substring(6, 8);
    String regalebene = s.substring(8, 10);
    String regalfach = s.substring(10, 12);
    if (geraetestring.matches("[P]"))
    {
      System.out.println("Pumpe");
    }
    if (geraetestring.matches("[V]"))
    {
      System.out.println("Ventil");
    }
    if (geraetestring.matches("[M]"))
    {
      System.out.println("Messeinrichtung");
    }
    if (geraetestring.matches("[K]"))
    {
      System.out.println("Kleinmaterial");
    }
    System.out.println("Ersatzteilnummer:"+ersatzteil);
    System.out.println("Regalreihe:"+regalreihe);
    System.out.println("Regal-Nr:"+regalnr);
    System.out.println("Regalebene:"+regalebene);
    System.out.println("Regalfach:"+regalfach);
  }



  public static void main(String[] args)
  {
    String s = JOptionPane.showInputDialog("Bitte korrekte Ersatzteilbezeichnung eingeben:" );
    if (checkString(s)==false)
    {
      System.out.println("Keine korrekte Ersatzteilbezeichnung!");
      System.exit(0);                         // Beendet das Programm
    }
//    if (checkString(s)==true)
//    {
      System.out.println("Ersatzteilbezeichnung korrekt!");
      findTool(s);
//    }
    System.exit( 0 );                           // Beendet das Programm
  }
}
 

Wildcard

Top Contributor
hmm
Code:
if(!string.matches([PVKM]\\d{11}))
  System.out.println("passt nicht");
Hätte ich gesagt.
 

André Uhres

Top Contributor
Oder so:
Code:
       if ((zahlen.matches("[0-9]*")) && (geraetestring.matches("[PVMK]"))) {
            return true;
        }
        return false;
Allgemein gilt: Negationen möglichst vermeiden.
 
G

Guest

Gast
Wildcard hat gesagt.:
hmm
Code:
if(!string.matches([PVKM]\\d{11}))
  System.out.println("passt nicht");
Hätte ich gesagt.

was genau heisst das ! vor dem string.matches und was die {11} hinter dem \\d , weis jetzt nicht ob ich das so machen kann weil ich den eigentlichen String ja in 2 neue kopiert hab... einmal den geraetestring der nur aus der ersten Stelle des eingegebenen Strings besteht und einmal den zahlen - string der aus den stellen vom eingegebenen String besteht die anch der ersten stelle folgen.


@André Uhres: oke habs mal so umgeändert das er ein true zurückgibt falls der String wie gewünscht eingegeben ist aber e funktioniert trotzdem nicht. Der will einfach nicht erkennen was mit dem zahlen - string ist.
was mich total verwirrt ist, das er bei dem geraetestring mit dem [PVMK] gar keine zicken macht aber der check bei dem zahlen-string nicht funktioniert.

Danke schonmal soweit an euch beide :toll:
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
was genau heisst das ! vor dem string.matches und was die {11} hinter dem \\d ,
! negiert den boolschen Ausdruck
{11} bedeutet genau 11 Zeichen von \\d (digit)

Anonymous hat gesagt.:
weis jetzt nicht ob ich das so machen kann weil ich den eigentlichen String ja in 2 neue kopiert hab... einmal den geraetestring der nur aus der ersten Stelle des eingegebenen Strings besteht und einmal den zahlen - string der aus den stellen vom eingegebenen String besteht die anch der ersten stelle folgen.
Brauchst du doch gar nicht. Wenn du den String zerlegen willst kannst du das hinterher immer noch machen.
 
G

Guest

Gast
Hm irgendwie funktionierts immer noch nicht so recht...
Dabei bin ich mir fast sicher das es funktioniert hat...
ich hab nur mal ein else auskommentiert um zu gucken obs dann immernoch klappt und den kommentar dann wieder rausgenommen und jetzt gibt er trotzdem immer ein true zurück grrr

hier der code wie ich ihn jetzt hab

Code:
import java.util.regex.*;
import javax.swing.*;


class lagerverwaltung

{
  static boolean checkString(String s)    //Ersatzteilbezeichnung korrekt?  Part Number correct?
  {
    if (s.length() == 12)                 // if stringlength != 12 return false . incorrect String
    {
      return true;
    }
    if (s.matches("[PKVM]\\d{11}"))
    {
      return true;
    }
    else
    {
      return false;
    }
  }

  static void findTool(String s) //output
  {
    String gtmp = s.substring(0, 1);
    String geraetestring = gtmp.toUpperCase();
    String ersatzteil = s.substring(1, 4);
    String regalreihe = s.substring(4, 6);
    String regalnr = s.substring(6, 8);
    String regalebene = s.substring(8, 10);
    String regalfach = s.substring(10, 12);
    if (geraetestring.matches("[P]"))
    {
      System.out.println("Pumpe");
    }
    if (geraetestring.matches("[V]"))
    {
      System.out.println("Ventil");
    }
    if (geraetestring.matches("[M]"))
    {
      System.out.println("Messeinrichtung");
    }
    if (geraetestring.matches("[K]"))
    {
      System.out.println("Kleinmaterial");
    }
    System.out.println("Ersatzteilnummer:"+ersatzteil);
    System.out.println("Regalreihe:"+regalreihe);
    System.out.println("Regal-Nr:"+regalnr);
    System.out.println("Regalebene:"+regalebene);
    System.out.println("Regalfach:"+regalfach);
  }



  public static void main(String[] args)
  {
    String s = JOptionPane.showInputDialog("Bitte korrekte Ersatzteilbezeichnung eingeben:" );
    if (checkString(s)==false)
    {
      System.out.println("Keine korrekte Ersatzteilbezeichnung!");
      System.exit(0);                         // Beendet das Programm
    }
//    if (checkString(s)==true)
//    {
      System.out.println("Ersatzteilbezeichnung korrekt!");
      findTool(s);
//    }
    System.exit( 0 );                           // Beendet das Programm
  }
}
 

Wildcard

Top Contributor
Code:
    if (s.length() == 12)                 // if stringlength != 12 return false . incorrect String
    {
      return true;
    }
Das muss schonmal weg.
 
G

Guest

Gast
Ohman dummer Fehler :D
danke fürs drauf aufmerksam machen!

Und danke für die schnelle Hilfe!
Denke so sollte es jetzt funktionieren.:toll:

Eine Frage noch, dass
Code:
if (s.matches("[PKVM]\\d{11}"))
könnte nicht heissen, dass wenn ich einen String eingebe der zwar 11 digits hat aber irgendwo nicht als erste stelle ein P,M,K oder V drin ist dass er dann trotzdem ein true zurückgibt, richtig?
 

Verjigorm

Top Contributor
Anonymous hat gesagt.:
könnte nicht heissen, dass wenn ich einen String eingebe der zwar 11 digits hat aber irgendwo nicht als erste stelle ein P,M,K oder V drin ist dass er dann trotzdem ein true zurückgibt, richtig?

kannst ja noch nen
Code:
if (s.startsWith("PKVM"))
vorher als Abfrage einfügen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G nen virus oder nen prob mit java Java Basics - Anfänger-Themen 3
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
H Kleines Prob Java Basics - Anfänger-Themen 5
K Erste Schritte prob mit DefaultListModel (string) Java Basics - Anfänger-Themen 8
K Erste Schritte prob anzeige Java Basics - Anfänger-Themen 4
F Button array prob Java Basics - Anfänger-Themen 7
K Prob. mit einer Fehlermeldung Java Basics - Anfänger-Themen 7
S OOP ArrayList Klasse nachbauen, prob mit remove Java Basics - Anfänger-Themen 5
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G hibernate . tutorial prob . Java Basics - Anfänger-Themen 4
S prob mit add in einer arry list Java Basics - Anfänger-Themen 13
G taschrechner prob Java Basics - Anfänger-Themen 2
A Connection Prob Java Basics - Anfänger-Themen 3
F prob beim positionieren eines banners Java Basics - Anfänger-Themen 4
N Array-Prob Java Basics - Anfänger-Themen 6
K prob mit einer matrix.ha Java Basics - Anfänger-Themen 34
G Erklärungs Prob Java Basics - Anfänger-Themen 15
T Quersummen Prob. Java Basics - Anfänger-Themen 4
javafreak1986 Util.class Prob Java Basics - Anfänger-Themen 8
L RandomAccessFile - Prob Java Basics - Anfänger-Themen 4
M Prob bei JTextArea auf .setEditable(false) setzen Java Basics - Anfänger-Themen 2
G mal wieder Prob mit Jar-File Java Basics - Anfänger-Themen 16
T Prob. Interface und Paramter Java Basics - Anfänger-Themen 5
E 2 Prob.:"ArrayIndexOutOfBoundsException" & do- Java Basics - Anfänger-Themen 2
Z prob beim erstellen eines jar files mit eclipse Java Basics - Anfänger-Themen 4
G kleines Prob bei "net send" programm Java Basics - Anfänger-Themen 2
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben