PDA

View Full Version : [Runde 1] - HochkommaBsp


Subway
14-05-2004, 04:25
Hallo!
Bin ganz neu hier und will EPROG erst im nächsten Semester machen. Darum übe ich schon ein wenig. Leider stehe ich ziemlich auf der Leitung.

Hier einmal der Prog-Ausschnitt

import eprog.*;
public class hochk extends EprogIO {

public static void main(String[] unbenutzt) {


String einlesen = readWord();
String erlaubt = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZ\". ");
boolean pruefen=false;





//Hier wird geprüft ob die eingegebenen Zeichen erlaubt sind:
for (int i=0; i<einlesen.length(); i++){
pruefen=false;
for (int j=0; j<erlaubt.length(); j++) {
if (erlaubt.charAt(j) == einlesen.charAt(i))
pruefen = true;
}
}



if (pruefen == false) System.out.println("FALSCHE EINGABE");



}
}

Aufgabe: es sind nur Buchstaben + " + . erlaubt. Wenn zb eine Zahl eingegben wird kommt Fehlermeldung.
Aber warum klappt das immer nur bis zum ersten Teil des Strings? Also zb: bei "ggg" kommt keine Fehlermeldung, was ja auch richtig ist, bei g8 kommt Fehlermeldung (auch richtig) nur bei g 8 kommt keine Fehlermeldung. Wieso geht es nicht über das Leerzeichen hinaus?

Hoffe jemand findet Zeit mir zu helfen. Auf alle Fälle Danke im Voraus

JohnFoo
14-05-2004, 11:01
public class hochk extends EprogIO
:ahhh: Aaaaah! Da fängt der Spaß schon an. NIEMALS von EprogIO erben. Außer, du erweiterst ihre Funktionalität. Bei der Vererbung spezialisiert man eine Klasse, du verwendest sie lediglich. Schlechte Angewohnheit, gleich wieder Finger weg davon!

Bei der Formatierung deines Source-Codes solltest du dich an irgendwelche Konventionen halten (kleingeschriebene Klassennamen sind ziemlich unüblich). Wenn du keine eigenen einheitlichen hast, dann nimm am besten die Code Conventions for the JavaTM Programming Language (http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html)

Habe jetzt nicht viel Zeit mich mit deinem Beispiel zu beschäftigen, aber soviel ich sehe, lässt sich die Überprüfung besser mit einem StringTokenizer (http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html) lösen. Zur Fehlerbehandlung solltest du Exceptions benutzen.
Die Art, wie du das Beispiel jetzt löst, ist zwar für einen Anfänger ok, aber in der Praxis nicht üblich.

Dieli
14-05-2004, 11:02
readword() liest nur bis zum ersten whitecharacter ein ... Also bis zum ersten Space, Tab, ...

Du müsstest deinen Code so ändern, dass er readword() solange macht, bis er alle Zeichen hat. Mit einer while Schleife zum Beispiel.
mfg Dieli