String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten

eclipseworker

Bekanntes Mitglied
Ich programmiere zur Uebung ein simples erweitbares Wörterbuch. Dieses speichert Woerter nach Art (Nomen, Artikel, Verb, Adjektiv, Adverb etc.) in Arraylists. Ich habe aber Probleme mit meiner Klasse Hauptwörter.
Es ist simple ich möchte eine Klasse Hauptwort schreiben die folgende Eigenschaften enthält:
Der String (das Wort) beginnt mit einem Großbuchstaben und enthält kein Großzeichen.
Dies ist mein Code:
Java:
import java.util.*;
/**
 * Ein Hauptwort beginnt mit einem Grossbuchstaben enhaelt keine Sonderzeichen und hat ein Geschlecht und vier Faelle. (Also es gilt: Anna, nicht anna oder ann5)
 * 
 * @author eclipseworker
 * @version alpha
 */
public class haupt
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private String x;
    private int sex;
    private Scanner sc=new Scanner(System.in);

    /**
     * Ein Hauptwort beginnt mit einem Grossbuchstaben enhaelt keine Sonderzeichen und hat 
     * Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich
     */
    public haupt(String wort, int geschlecht)
    {
        while(!starteMitGrossBuchstaben(wort)){
            System.out.println("Ungueltige Eingabe! Stellen Sie sicher, das Wort keine Zahlen enthaelt und gross anfaengt!");
            wort=sc.next();
            while(enthaeltSonderzeichen(wort)){
                System.out.println("Ungueltige Eingabe! Stellen Sie sicher, das Wort keine Zahlen enthaelt und gross anfaengt!");
                wort=sc.next();
            }
        }
        while(enthaeltSonderzeichen(wort)){
            System.out.println("Ungueltige Eingabe! Stellen Sie sicher, das Wort keine Zahlen enthaelt und gross anfaengt!");
            wort=sc.next();
            while(!starteMitGrossBuchstaben(wort)){
                System.out.println("Ungueltige Eingabe! Stellen Sie sicher, das Wort keine Zahlen enthaelt und gross anfaengt!");
                wort=sc.next();
            }
        }
        while(geschlecht<0){
            System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
            geschlecht=sc.nextInt();
            while (geschlecht>2){
                System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
                geschlecht=sc.nextInt();
            }
        }
        while(geschlecht>2){
            System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
            geschlecht=sc.nextInt();
            while (geschlecht<0){
                System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
                geschlecht=sc.nextInt();
            }
        }
        x=wort; 
        sex=geschlecht;
    }
    
    /**
     * Enthaelt ein String ein anderes Zeichen auser a-z oder A-z gibt die Methode true retur.
     */public boolean enthaeltSonderzeichen(String pruefwort){
        char[] c=pruefwort.toCharArray();
        for(int p=0; p<c.length; p++){
            int f=(int)c[p];
            if(!(f<65 || (f>90 && f<97) || f>122 )){
                return true;
            }
        }
        return false;
    }
    
    /**
     * Startet der String mit A-Z gibt die Methode true retur.
     */
    public boolean starteMitGrossBuchstaben(String pruefwort){
        char[] c=pruefwort.toCharArray();
        for (int i = 65; i < 91; i++) {
            if(c[0]==((char)i)){
                return true;
            }
        }
        return false;
    }
}
Mein Probleme gültige Wörter nimmt er nicht.
 
Java:
        while(geschlecht<0){
            System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
            geschlecht=sc.nextInt();
            while (geschlecht>2){
                System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
                geschlecht=sc.nextInt();
            }
        }
        while(geschlecht>2){
            System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
            geschlecht=sc.nextInt();
            while (geschlecht<0){
                System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
                geschlecht=sc.nextInt();
            }
        }

... lässt sich zusammenfassen zu:

Java:
        while(geschlecht < 0 || geschlecht > 2){
            System.out.println("Ungueltiges Geschlecht: 0 = neutral, 1 = weiblich, 2 = maennlich");
            geschlecht=sc.nextInt();
        }
 
Java:
boolean isHauptwort(final String s) {
		return s.matches("[A-Z][a-z]*");
	}
...[c]s[/c] vorher auf [c]null[/c] pruefen und [c]trim()[/c]en...
 

Zurück
Oben