muckelzwerg
Lt. Junior Grade
- Registriert
- Mai 2006
- Beiträge
- 460
AW: JAVA simpler programmfehler - suche hilfe
Ich will nicht den Buhmann spielen, aber welche Grundlagen hast Du?
Ich fürchte Du wirst eine ziemlich ekelhafte Lernkurve erfahren, wenn Du auf die Art weitermachst.
Bei den ersten Posts drängt sich auf, dass Dir das Thema "Rückgabewerte von Funktionsaufrufen" nicht so ganz klar ist. Bei den Weiteren kommen noch ganz andere Fragen.
Vom Ansatz her hast Du doch folgendes:
Ein Feld (also ein Abfolge von Elementen), das Daten enthält.
Das ist der String, dessen Inhalt Du prüfen willst, er besteht aus einer Folge von einzelnen Zeichen.
Du willst jetzt die Anzahl der Zeichen betrachten.
Dafür gibt es die Methode "length()", als Methode der String-Klasse.
Wenn Du also ein String Objekt hast, kannst die mit "<Objektname>.length()" diese Methode für das Stringobjekt aufrufen.
Der "Rückgabewert" enthält dann die gesuchte Information.
Genauere Beschreibung der Methode: http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html#length()
Die Methode gibt also einen "int"-Wert zurück. (die Anzahl der Zeichen).
Diesen Wert kannst Du zuweisen und dann weiterverarbeiten.
Wenn Dein String "12345" ist, dann gibt
identnummer.length(); den Wert "5" zurück, und
stringlaenge=identnummer.length();
speichert diesen Wert in der Variable "stringlänge".
Die Prüfung der Länge läuft dann allgemein so ab:
Dieser Ablauf wird solange wiederholt, bis die Abbruchbedingung erfüllt ist.
Damit landest Du in Java ungefähr hier:
Die Prüfung kannst Du dann beliebig erweitern. Dabei kommt es eigentlich nur drauf an, die verschiedenen Tests sinnvoll zu verschachteln.
Für die Prüfung der Zeichen "läufst" (iterierst) Du über das Feld mit den Daten.
Du betrachtest also jedes einzelne Zeichen des Strings und kontrollierst, ob es eine Zahl ist oder nicht.
Findest Du ein Zeichen, das keine Zahl ist, ist der String ungültig und die Eingabe muss wiederholt werden.
Die Methode "isDigit()" ist insofern besonders, da sie ohne ein konkretes Objekt aufgerufen werden kann.
mit "Character.isDigit('a');" kann direkt ein Zeichen geprüft werden. "Character" ist dabei der Name der Klasse, in der die Methode enthalten ist.
(Schau Dir an, was "statische Methoden" sind!)
Genauso kannst Du die Methode aber auch bei einem beliebigen Character-Objekt aufrufen.
Für die Prüfung spielt der Wert 'a' im Character dann keine Rolle mehr, da das zu prüfende Zeichen der Methode direkt übergeben wird.
(Deswegen auf jeden Fall genauer anschauen und lernen.)
Mit der zweiten verschachtelten Prüfung landet man dann etwa hier:
Du solltest Dir wirklich erstmal die Grundlagen erarbeiten, sonst wirst Du anstrengende, zeitraubende und entmutigende Probleme bekommen.
-- -- muckelzwerg
Ich will nicht den Buhmann spielen, aber welche Grundlagen hast Du?
Ich fürchte Du wirst eine ziemlich ekelhafte Lernkurve erfahren, wenn Du auf die Art weitermachst.
Bei den ersten Posts drängt sich auf, dass Dir das Thema "Rückgabewerte von Funktionsaufrufen" nicht so ganz klar ist. Bei den Weiteren kommen noch ganz andere Fragen.
Vom Ansatz her hast Du doch folgendes:
Ein Feld (also ein Abfolge von Elementen), das Daten enthält.
Das ist der String, dessen Inhalt Du prüfen willst, er besteht aus einer Folge von einzelnen Zeichen.
Du willst jetzt die Anzahl der Zeichen betrachten.
Dafür gibt es die Methode "length()", als Methode der String-Klasse.
Wenn Du also ein String Objekt hast, kannst die mit "<Objektname>.length()" diese Methode für das Stringobjekt aufrufen.
Der "Rückgabewert" enthält dann die gesuchte Information.
Genauere Beschreibung der Methode: http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html#length()
Die Methode gibt also einen "int"-Wert zurück. (die Anzahl der Zeichen).
Diesen Wert kannst Du zuweisen und dann weiterverarbeiten.
Wenn Dein String "12345" ist, dann gibt
identnummer.length(); den Wert "5" zurück, und
stringlaenge=identnummer.length();
speichert diesen Wert in der Variable "stringlänge".
Die Prüfung der Länge läuft dann allgemein so ab:
Code:
solange Abbruchbedingung nicht erfüllt:
einlesen des Strings
ermitteln der länge
vergleichen der länge mit dem gewünschten wert
wenn länge in ordnung -> abbruchbedingung auf "erfüllt" setzen
wenn länge nicht in ordnung -> abbruchbedingung bleibt "unerfüllt"
Damit landest Du in Java ungefähr hier:
Code:
BufferedReader ein=new BufferedReader(new InputStreamReader(System.in));
boolean lengthOK = false;
String identnummer = "";
while( lengthOK == false ){
try{
System.out.println("Identnummer eingeben: ");
identnummer = ein.readLine();
}catch(Exception e){
}
if( 6 == identnummer.length() ){
lengthOK = true;
} else {
System.out.println("Ungültige Länge. Die Identnummer muss aus 6 Ziffern bestehen");
}
}
Für die Prüfung der Zeichen "läufst" (iterierst) Du über das Feld mit den Daten.
Du betrachtest also jedes einzelne Zeichen des Strings und kontrollierst, ob es eine Zahl ist oder nicht.
Findest Du ein Zeichen, das keine Zahl ist, ist der String ungültig und die Eingabe muss wiederholt werden.
Die Methode "isDigit()" ist insofern besonders, da sie ohne ein konkretes Objekt aufgerufen werden kann.
mit "Character.isDigit('a');" kann direkt ein Zeichen geprüft werden. "Character" ist dabei der Name der Klasse, in der die Methode enthalten ist.
(Schau Dir an, was "statische Methoden" sind!)
Genauso kannst Du die Methode aber auch bei einem beliebigen Character-Objekt aufrufen.
Code:
Character c = new Character('a');
boolean value = c.isDigit('0');
(Deswegen auf jeden Fall genauer anschauen und lernen.)
Mit der zweiten verschachtelten Prüfung landet man dann etwa hier:
Code:
BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
boolean stringOK = false;
String identnummer = "";
while (stringOK == false) {
try {
System.out.println("Identnummer eingeben: ");
identnummer = ein.readLine();
} catch (Exception e) {
// Fehlerbehandlung...
}
if (6 == identnummer.length()) {
stringOK = true;
for (int i = 0; i < 6; i++) {
char value = identnummer.charAt(i);
if (Character.isDigit(value) == false) {
stringOK = false;
System.out.println("Ungültiges Zeichen: \"" + value + "\"");
}
}
} else {
System.out.println("Ungültige Länge. Die Identnummer muss aus 6 Ziffern bestehen");
}
}
System.out.println("Identnummer: \"" + identnummer + "\" ist in Ordnung.");
Du solltest Dir wirklich erstmal die Grundlagen erarbeiten, sonst wirst Du anstrengende, zeitraubende und entmutigende Probleme bekommen.
-- -- muckelzwerg