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...
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
}
}