[Java] Help: String-Eingabe auf Zeichen überprüfen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ramos, 9. Dezember 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. Dezember 2006
    Help: String-Eingabe auf Zeichen überprüfen

    Hallo,
    ich muss für die Uni ein Beispiel fertigstellen das folgene Aufgabenstellung besitzt.

    "Schreiben Sie die Klasse AsciiReader und die Klasse AsciiTools.


    Die Klasse AsciiTools besitzt eine statische Methode (public static boolean checkZeile(String zeile)), welche einzelne Strings (die Zeilen des Bildes) auf Korrektheit überprüft d.h. prüft ob nur die zugelassenen Zeichen darin vorkommen.
    Die Zeile ist korrekt, wenn die Länge stimmt und nur die vorgegebenen Zeichen enthalten sind.
    Erlaubt sind folgende 17 Zeichen: "#WMBRXVYIti+=;:,." Die Klasse AsciiReader beinhaltet die main-Methode, welche das Bild einliest und die Prüfungen ausführt.

    Eingabedaten:
    Ein 44-zeiliges, 50 Zeichen breites Ascii-Bild

    Ausgabedaten:
    Geben Sie "OK" aus, wenn alles in Ordnung ist.

    Fehlerbehandlung:
    Geben Sie "FALSCHE EINGABE" aus, wenn das Bild nicht den Anforderungen entspricht:
    • Es wurden nicht genau 44 Zeilen eingegeben.
    • Eine Zeile ist nicht 50 Zeichen breit.
    • Ein ungültiges Zeichen wurde eingegeben"
    Wäre nett wenn mir jemand helfen könnte.

    Mein bisheriger Quell-code sieht wie folgt aus aber funktioniert irgendwie nicht richtig)

    Code:
    import java.util.Scanner;
    
    public class AsciiReader
    {
     public static void main(String[] args)
     {
     String eingabe;
     Scanner einlesen = new Scanner(System.in);
     eingabe = einlesen.next(); 
     if (eingabe.equals("#"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("W"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("M"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("B"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("R"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("X"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("V"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("Y"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("I"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("t"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("i"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("+"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("="))
     {
     System.out.println("OK");
     }
     if (eingabe.equals(";"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals(":"))
     {
     System.out.println("OK");
     }
     if (eingabe.equals("."))
     {
     System.out.println("OK");
     }
     if (eingabe.equals(" "))
     {
     System.out.println("OK");
     }
     else
     {
     System.out.println("Falsche Eingabe");
     }
     }
    }
    
    lG, Ramos
     
  2. 9. Dezember 2006
    AW: Help: String-Eingabe auf Zeichen überprüfen

    Also.. ich würd ma sagen, das hört sich ma schwer nach Hausaufgaben an, deswegen will ich dir nicht die spannung nehmen, sondern du darfst selbst entdecken wie es gehen kann..

    http://www.galileocomputing.de/openbook/javainsel5/javainsel04_000.htm#Xxx999378

    greetz schiene
     
  3. 10. Dezember 2006
    AW: Help: String-Eingabe auf Zeichen überprüfen

    Ich hatte ja geschrieben, dass ich es für die Uni brauche und deswegen keine Buchanleitung brauche.
    Wenn du mir schon helfen möchtest,(was aber anscheinend nicht der Fall ist) dann könntest du mir einen Link geben, zu einem Tut dass mir diese Aufgabenstellung lösen könnte.
    Denn ich habe leider keine Zeit, 500 Seiten aufmerksam durchzulesen um DIESES Problem zu lösen.
    Danke!

    lG, Ramos
     
  4. 10. Dezember 2006
    AW: Help: String-Eingabe auf Zeichen überprüfen

    das sind keine 5000 seiten wenn du mal auf den link gegangen wärst sind da nämlich String funktionen. und wie ich das bei dir verstehe musst du nen String untersuchen..
    Code:
    
    
    out.println( "Habseligkeiten" );
    out.println( "Habseligkeiten".length() );
    
    
    Galileo Computing
    4.1.2 String-Objekte neu anlegen downtop
    
    Liegt die Zeichenkette nicht als String-Literal vor, lassen sich mit den unterschiedlichen Konstruktoren der String-Klasse neue Objekte aufbauen.
    
    final class java.lang .String
     implements CharSequence, Comparable<String>, Serializable
    
    
    gp String() Erzeugt ein neues Objekt ohne Zeichen (den leeren String »«).
    gp String( String string ) Erzeugt ein neues Objekt mit einer Kopie von string. Es wird selten benötigt, da String-Objekte unveränderbar (immutable) sind.
    gp String( char[] value ) Erzeugt ein neues Objekt und konvertiert die im char-Feld vorhandenen Zeichen in das String-Objekt.
    gp String( char[] value, int offset, int length ) Erzeugt wie String(char[]) einen String aus einem Ausschnitt eines Zeichenfelds. Der verwendete Ausschnitt beginnt bei dem Index offset und umfasst length-Zeichen.
    gp String( byte[] bytes ) Erzeugt ein neues Objekt aus dem Bytefeld. Das Byte-Array enthält keine Unicode-Zeichen, sondern eine Folge von Bytes, die nach der Standardkodierung der jeweiligen Plattform in Zeichen umgewandelt werden.
    gp String( byte[] bytes, int offset, int length ) Erzeugt wie String(byte[]) einen String aus einem Ausschnitt eines Bytefelds.
    gp String( byte[] bytes, String ) throws UnsupportedEncodingException Erzeugt einen neuen String von einem Byte-Array mithilfe einer speziellen Zeichenkodierung, die die Umwandlung von Bytes in Unicode-Zeichen festlegt.
    gp String( byte[] bytes, int offset, int length, String ) throws UnsupportedEncodingException Erzeugt einen neuen String mit einem Teil des Byte-Arrays mithilfe einer speziellen Zeichenkodierung.
    gp String( StringBuffer buffer ) Erzeugt aus einem veränderlichen StringBuffer-Objekt ein unveränderliches String-Objekt, das dieselbe Zeichenreihe repräsentiert.
    gp String( StringBuilder builder ) Erzeugt den String aus einem StringBuilder.
    gp String( int[] codePoints, int offset, int count ) Neu in Java 5 sind die Codepoints, die Zeichen über int kodieren.
    
    Die Konstruktoren sind im Speziellen nur dann nötig, wenn aus einer Fremdrepräsentation wie einem StringBuffer, StringBuilder, char[] oder byte[], oder Teilen daraus, ein String-Objekt aufgebaut werden soll.
    
    Beispiel Erzeuge aus einem char-Feld mit Vokalen ein String-Objekt.
    
    char[] vocalsArray = { 'a', 'e', 'i', 'o', 'u' };
    String vocal = new String( vocalsArray ) ;
    
    
    Der Konstruktor String(String)
    
    Ein Konstruktor führt leicht zur Verwirrung: der einen anderen String annehmende Konstruktor. So ergeben die beiden folgenden Zeilen die Referenz auf ein String-Objekt:
    
    String str = "Wer ist Rudolf Wijbrand Kesselaar?";
    String str = new String( "Wer ist Rudolf Wijbrand Kesselaar?" );
    
    Die zweite Lösung erzeugt unnötigerweise ein zusätzliches String-Objekt, denn das Literal ist ja schon ein vollwertiges String-Objekt.
    
    Der Konstruktor ist nur für eine Optimierung zu gebrauchen. Immer wenn mit substring() ein Teilstring aufgebaut wurde, wird die ganze Zeichenfolge als char-Feld intern referenziert. Um den Speicherbedarf in diesem Fall zu optimieren, ist dieser Konstruktor gut geeignet.
    Leerer String, Leer-String oder Null-String
    
    Durch
    
    String str = "";
    
    oder
    
    String str = new String();
    
    werden String-Objekte erzeugt, die keine Zeichen enthalten. Diesen String nennen wir dann leeren String, Leer-String oder Null-String. Der letzte Begriff ist leider etwas unglücklich und führt oft zur Verwechslung mit Folgendem:
    
    String s = null;
    System.out.println( s ); // null
    
    Hier bekommen wir keinen leeren String und bei der Benutzung im Methodenaufruf, etwa s.length(), eine NullPointerException.
    Strings einer gegebenen Länge erzeugen
    
    An einigen Stellen in den Bibliotheken gibt es noch Nachholbedarf – das gilt insbesondere für die Klasse String. Zum Beispiel gibt es keine Funktion, die eine Zeichenkette einer vorgegebenen Länge aus einem einzelnen Zeichen erzeugt. Selbst einfachste BASIC-Dialekte verfügen über solche Funktionen. In Java müssen wir sie selbst entwickeln.
    
    Zunächst ist zu fragen, ob die Zeichenkette als String oder als StringBuffer/StringBuilder bereitgestellt werden soll. Möchten wir das Ergebnis als String, können wir erst ein char-Feld aufbauen, das dann mit Arrays.fill() und einem gewünschten Zeichen gefüllt wird. Im zweiten Schritt konvertieren wir das Feld in ein String-Objekt:
    
    Listing 4.1 Aus GenerateStringWithGivenLength.java
    
    public static String generateStringWithLength( int len, char fill )
    {
     if ( len < 0 )
     return null;
     char[] cs = new char[ len ];
     Arrays.fill( cs, fill );
     return new String( cs );
    }
    
    
    Galileo Computing
    4.1.3 String-Länge downtop
    
    String-Objekte verwalten intern die Zeichenreihe, die sie repräsentieren, und bieten eine Vielzahl von Methoden, um die Eigenschaften des Objekts preiszugeben. Eine Methode haben wir schon benutzt: length(). Für String-Objekte ist diese so implementiert, dass die Anzahl der Zeichen im String (die Länge des Strings) zurückgegeben wird.
    
    Beispiel "Hallo".length() hat fünf Zeichen. Leerzeichen und Sonderzeichen werden mitgezählt.
    
    Um herauszufinden, ob der String keine Zeichen hat, lässt sich neben length() == 0 auch unter Java 5 die Methode isEmpty() nutzen.
    
    Galileo Computing
    4.1.4 Gut, dass wir verglichen haben downtop
    
    Um Strings zu vergleichen, gibt es viele Möglichkeiten und Optionen. Oft wollen wir einen konstanten String mit einer Benutzereingabe vergleichen. Hier gibt es die aus der Klasse Object geerbte, doch in der Klasse String überschriebene Methode equals(). Die Methode gibt true zurück, falls die Strings Zeichen für Zeichen übereinstimmen. Groß- und Kleinschreibung werden dabei unterschieden. Mit equalsIgnoreCase() werden zwei Zeichenketten verglichen, ohne dass auf die Groß-/Kleinschreibung geachtet wird.
    
    Beispiel equals() liefert für result1 den Wert false und equalsIgnoreCase() für result2 den Wert true.
    
    String str = "REISEPASS";
    boolean result1 = str. equals ( "Reisepass" ); // false
    boolean result2 = str. equalsIgnoreCase ( "ReISePaSs" ); // true
    
    
    Sortierung mit der Größer/Kleiner-Relation
    
    Wie equals() und equalsIgnoreCase() vergleichen auch die Methoden compareTo(String) und compareToIgnoreCase(String) zwei Strings. equals() aus String überschreibt die Methode equals() aus Object, sodass der Parametertyp auch Object ist. Der Argumenttyp beim Aufruf kann natürlich völlig anders sein, doch Gleichheit stellt equals()nur dann fest, wenn das Argument auch vom Typ String ist. (Bei beliebigen Objekten wird nicht automatisch die Methode toString() aufgerufen.) Selbst Vergleiche mit einem inhaltsgleichen StringBuffer-Objekt ergeben immer false – ein StringBuffer ist kein String. Der Rückgabewert von compareTo() ist auch kein boolean, sondern ein int. Das Ergebnis signalisiert, ob das Argument lexikografisch kleiner oder größer als das String-Objekt ist beziehungsweise mit diesem übereinstimmt. Das ist zum Beispiel in einer Sortierfunktion wichtig. Der Sortieralgorithmus muss beim Vergleich zweier Strings wissen, wie sie einzusortieren sind.
    
    Beispiel Ist s der String "Justus", dann gilt:
    
    s. compareTo ( "Bob" ) > 0 //"Justus" ist lexikographisch größer als "Bob"
    s. compareTo ( "Justus" ) == 0
    s. compareTo ( "Peter" ) < 0
    
    
    Der von compareTo() vorgenommene Vergleich basiert nur auf der internen numerischen Kodierung der Unicode-Zeichen. Die Vergleichsfunktion berücksichtigt nicht die landestypischen Besonderheiten, etwa die übliche Behandlung der deutschen Umlaute. Dafür müssten wir Collator-Klassen nutzen, die später vorgestellt werden.
    
    compareToIgnoreCase() ist vergleichbar mit equalsIgnoreCase(), bei der die Groß-/Kleinschreibung keine Rolle spielt. Bei Sun wird dies intern mit einem Comparator implementiert, der zwei beliebige Objekte – für Zeichenketten natürlich vom Typ String – in eine Reihenfolge bringt.
    Endet der String mit ..., beginnt er mit ...
    
    Interessiert uns, ob der String mit einer bestimmten Zeichenfolge beginnt (wir wollen dies »Präfix« nennen), so rufen wir die startsWith()-Methode auf. "http://java-tutor.com".startsWith("http") ergibt true. Eine ähnliche Funktion gibt es für Suffixe: endsWith(). Sie überprüft, ob ein String mit einer Zeichenfolge am Ende übereinstimmt.
    
    Beispiel Die Methode endsWith() ist praktisch zum Testen von Dateinamenendungen:
    
    String filename = "Echolallie.gif";
    boolean issesGif = filename. endsWith ( ".gif" ); // true
    
    
    String-Teile vergleichen
    
    Eine Erweiterung der Ganz-oder-gar-nicht-Vergleichsfunktionen bietet die Methode regionMatches(), mit der Teile einer Zeichenkette mit Teilen einer anderen verglichen werden können. Nimmt das erste Argument von regionMatches() den Wahrheitswert true an, dann spielt die Groß-/Kleinschreibung keine Rolle – damit lässt sich dann auch ein startsWith() und endsWith() mit Vergleichen unabhängig von Groß-/Kleinschreibung durchführen. Der Rückgabewert ist wie bei equalsXXX() ein boolean.
    
    Beispiel Der Aufruf von regionMatches() ergibt true.
    
    String s = "Deutsche Kinder sind zu dick";
    s. regionMatches ( 9, "Bewegungsarmut bei Kindern", 19, 6 );
    
    
    Die Methode beginnt den Vergleich am neunten Zeichen, also bei »K« im String s und dem 19. Buchstaben in dem Vergleichsstring, ebenfalls ein »K«. Dabei beginnt die Zählung der Zeichen wieder bei 0. Ab diesen beiden Positionen werden sechs Zeichen verglichen. Im Beispiel ergibt der Vergleich von »Kinder« und »Kinder« dann true.
    
    Beispiel Sollte der Vergleich unabhängig von der Groß-/Kleinschreibung stattfinden, ist das erste Argument der überladenen Funktion true.
    
    s.regionMatches( true, 9, "Bewegungsarmut bei Kindern", 19, 6 );
    
    
    
    Galileo Computing
    4.1.5 String-Teile extrahieren downtop
    
    Die vielleicht wichtigste Funktion der Klasse String ist charAt(int index). Diese Methode liefert das entsprechende Zeichen an einer Stelle, die »Index« genannt wird. Dies bietet eine Möglichkeit, die Zeichen eines Strings (zusammen mit der Methode length()) zu durchlaufen. Ist der Index kleiner Null oder größer beziehungsweise gleich der Anzahl der Zeichen im String, so löst die Methode eine StringIndexOutOfBoundsException1 mit der Fehlerstelle aus.
    
    Beispiel Liefere das erste und letzte Zeichen im String s:
    
    String s = "Ich bin nicht dick! Ich habe nur weiche Formen.";
    char first = s. charAt( 0 ) ; // 'I'
    char last = s. charAt( s.length() – 1 ); // '.'
    
    
    Wir müssen bedenken, dass die Zählung wieder bei 0 beginnt. Daher müssen wir von der Länge des Strings eine Stelle abziehen. Da der Vergleich auf den korrekten Bereich bei jedem Zugriff auf charAt() stattfindet, ist zu überlegen, ob der String bei mehrmaligem Zugriff nicht stattdessen einmalig in ein eigenes Zeichen-Array kopiert werden sollte.
    Zeichenfolgen als Array aus dem String extrahieren
    
    Während charAt() nur ein Zeichen liefert, kopiert getChars() mehrere Zeichen aus einem angegebenen Bereich des Strings in ein übergebenes Feld.
    
    Beispiel Kopiere Teile des Strings in ein Feld.
    
    String s = "Body-Mass-Index = Körpergewicht (kg) / Körpergröße (m) / Körpergröße (m)";
    char[] chars = new char[13];
    s. getChars ( 18, 18 + 13, chars, 0 );
    
    s.getChars() kopiert ab Position 18 aus dem String s 13 Zeichen in die Elemente des Arrays chars. Das erste Zeichen aus dem Ausschnitt steht dann in chars[0].
    
    Die Methode getChars() muss natürlich wieder testen, ob die gegebenen Argumente im grünen Bereich liegen. Das heißt, ob der Startwert nicht < 0 ist und ob der Endwert nicht über die Größe des Strings hinausgeht. Passt das nicht, löst die Methode eine StringIndexOutOfBoundsException aus. Liegt zudem der Startwert hinter dem Endwert, gibt es ebenfalls eine StringIndexOutOfBoundsException, die anzeigt, wie groß die Differenz der Positionen ist. Am besten ist es, die Endposition aus der Startposition zu berechnen, wie im obigen Beispiel. Passen alle Zeichen in das Feld, kopiert die Implementierung der Methode getChars() mittels System.arraycopy() die Zeichen aus dem internen Array des String-Objekts in das von uns angegebene Ziel.
    
    Möchten wir den kompletten Inhalt eines Strings als ein Array von Zeichen, so können wir die Methode toCharArray() verwenden. Für häufigen Zugriff auf einen String bewirkt dies eine Geschwindigkeitssteigerung. toCharArray() arbeitet intern auch mit getChars(). Als Ziel-Array legt die Methode ein neues Array an, welches wir dann zurückbekommen.
    
    Beispiel Die untersten vier Bits von i sind in eine hexadezimale Ziffer umzuwandeln:
    
    char c = "0123456789ABCDEF".toCharArray()[i & 15];
    
    Für diesen speziellen Fall wäre charAt() zwar schneller gewesen, doch demonstriert das Beispiel, dass wir per [] auch direkt auf die Array-Elemente eines Methodenergebnisses zugreifen können. Das ist völlig korrekt, denn toCharArray() liefert ein Array als Ergebnis.
    
    Teile eines Strings als String
    
    Wollen wir bei den Teilstrings keine Zeichenfelder bekommen, sondern bei dem Typ String bleiben, so greifen wir zur Methode substring(), die in zwei Varianten existiert. Sie liefern beide ein neues String-Objekt zurück, das einem Teil des Originals entspricht.
    
    Beispiel substring(int) liefert eine Teilzeichenkette ab einem Index bis zum Ende. Das Ergebnis ist ein neues String-Objekt.
    
    String s1 = "Die erste McDonalds Filiale öffnete 1971 in München";
    String s2 = s1. substring ( 44 ); // München
    
    String s2 ist dann mit dem Endstück »München« belegt.
    
    Der Index von substring() gibt die Startposition an, ab der Zeichen in die neue Teilzeichenkette kopiert werden. substring() liefert den Teil von diesem Zeichen bis zum Ende des ursprünglichen Strings.
    
    Wollten wir die Teilzeichenkette genauer spezifizieren, so nutzen wir die zweite Variante von substring(). Ihre Parameter erwarten den Anfang und das Ende des gewünschten Ausschnitts:
    
    String s1 = "fettleibig : adipös";
    String s2 = s1. substring ( 4, 8 ); // leib
    
    Wie man sieht, bezeichnet die Endposition das erste Zeichen des ursprünglichen Strings, das nicht mehr zur Teilzeichenkette gehören soll. Bei genauerer Betrachtung ist substring(int) nichts anderes als eine Spezialisierung von substring(int, int), denn die erste Variante mit dem Startindex lässt sich auch schreiben als:
    
    s.substring( beginIndex, s.length() );
    
    Selbstverständlich kommen nun diverse Indexüberprüfungen hinzu – eine StringIndexOutOfBoundsException meldet fehlerhafte Positionsangaben wie bei chatAt().
    Strings rechtsbündig setzen
    
    Falls wir immer ein fixes Zeichen verwenden und die String-Länge in einem festen Bereich bleibt, so ist eine andere Möglichkeit noch viel eleganter (aber nicht unbedingt schneller). Sie arbeitet mit der substring()-Methode. Wir schneiden aus einem großen String mit festen Zeichen einfach einen String mit der benötigten Länge heraus. Damit lässt sich auch flott eine Zeile formulieren, die einen Text mit so vielen Leerzeichen füllt, dass dieser rechtsbündig ist.
    
    Listing 4.2 StringAlignRight.java
    
    public class StringAlignRight
    {
     public static String alignRight( String s )
     {
     return " ".substring( s.length() ) + s;
     }
     public static void main( String[] args )
     {
     System.out.println( alignRight("Huhu") ); // ' Huhu'
     }
    }
    
    Da seit Java 5 die Methode format() mit im Boot ist, sieht die Lösung viel einfacher aus:
    
    System.out.format( "|%10.2f|%n", 123.456 ); // | 123,46|
    System.out.format( "|%-10.2f|", 123.456 ); // |123,46 |
    
    
    Galileo Computing
    4.1.6 Suchen und Ersetzen downtop
    
    Um die erste Position eines Zeichens im String zu finden, verwenden wir die indexOf()-Methode. Als Argument lässt sich unter anderem ein Zeichen oder ein String vorgeben, der gesucht wird.
    
    Beispiel Ein Zeichen mit indexOf() suchen
    
    String str = "Ernest Gräfenberg";
    int index = str.indexOf( 'e' ); // 3
    
    
    Im Beispiel ist index gleich 3, da an der Position 3 das erste Mal ein »e« vorkommt. Die Zeichen in einem String werden wie Array-Elemente ab 0 durchnummeriert. Falls das gesuchte Zeichen im String nicht vorkommt, gibt die Methode indexOf() als Ergebnis –1 zurück.
    
    Beispiel Um das nächste »e« zu finden, können wir die zweite Version von indexOf() verwenden.
    
    index = str. indexOf ( 'e', index + 1 ); // 11
    
    
    Mit dem Ausdruck index+1 als Argument der Methode wird in unserem Beispiel ab der Stelle 4 weitergesucht. Das Resultat der Methode ist dann 11. Ist der Index kleiner 0, so wird dies ignoriert und automatisch auf 0 gesetzt.
    
    Beispiel Beschreibt das Zeichen c ein Escape-Zeichen, etwa einen Tabulator oder ein Return, dann soll die Bearbeitung weitergeführt werden.
    
    if ( "\b\t\n\f\r\"\\". indexOf (c) >= 0 )
    {
     ...
    }
    
    
    Genauso wie am Anfang gesucht werden kann, ist es auch möglich, am Ende zu beginnen.
    
    Beispiel Hierzu dient die Methode lastIndexOf().
    
    String str = "Gary Schubach";
    int index = str. lastIndexOf ( 'a' ); // 10
    
    
    Hier ist index gleich 10. Genauso wie bei indexOf() existiert eine überladene Version, die rückwärts ab einer bestimmten Stelle nach dem nächsten Vorkommen von »a« sucht. Wir schreiben:
    
    index = str.lastIndexOf( 'a', index – 1 );
    
    Nun ist der Index 1.
    
    Hinweis Die Parameter der char-orientierten Methoden indexOf() und lastIndexOf() sind alle vom Typ int und nicht, wie erwartet, vom Typ char und int. Das zu suchende Zeichen wird als erstes int-Argument übergeben. Die Umwandlung des char in ein int nimmt der Java-Compiler automatisch vor, so dass dies nicht weiter auffällt. Bedauerlicherweise kann es dadurch aber zu Verwechslungen bei der Reihenfolge der Argumente kommen: Bei s.indexOf(start, c) wird der erste Parameter start als Zeichen interpretiert und das gewünschte Zeichen c als Startposition der Suche.
    
    Es gibt noch eine weitere Version von indexOf() und lastIndexOf(), die nach einem Teil-string (engl. substring) sucht. Die Versionen erlauben ebenfalls einen zweiten Parameter, der den Startindex bestimmt.
    
    Beispiel indexOf() mit der Suche nach einem Teilstring:
    
    String str = "In Deutschland gibt es immer noch ein Ruhrgebiet, " +
     "obwohl es diese Krankheit schon lange nicht mehr geben soll.";
    String s = "es";
    int index = str. indexOf ( s, str.indexOf(s) + 1 ); // 57
    
    
    Die nächste Suchposition wird ausgehend von der alten Finderposition errechnet. Das Ergebnis ist 57, da dort zum zweiten Mal das Wort »es« auftaucht.
    
    Das Idiom s.indexOf(t) > –1 ist seit Java 5 nicht mehr nötig, um zu testen, ob ein Teil-string t im String s vorkommt, da es seit dem die Methode contains() gibt.
    Zeichen ersetzen
    
    Da String-Objekte unveränderlich sind, kann eine Veränderungsfunktion nur einen neuen String mit den Veränderungen zurückgeben. Die replace()-Methode ist ein Beispiel für diese Vorgehensweise.
    
    Beispiel Ändere den in einer Zeichenkette vorkommenden Buchstaben ›o‹ in ›u‹:
    
    String s1 = "Honolulu";
    String s2 = s1. replace ( 'o', 'u' ); // s2 = "Hunululu"
    
     
  5. 10. Dezember 2006
    AW: Help: String-Eingabe auf Zeichen überprüfen

    Es ist nicht unsere Pflicht, dir zu helfen.
    Wenn du es nicht schaffst, auf den Link zu klicken und das ganze in 1 (!) Tag durchzuarbeiten ( ja, das schafft man, wenn man will ), dann wuerde ich dir WAERMSTENS ans Herz legen, dein Studium abzubrechen und lieber was machen, bei dem man nichts lesen muss ...

    Wo ein Wille ist, da ist auch ein Weg.
    Wo kein Wille ist, da ist auch kein Weg.

    [X] Hausaufgaben
    [X] Erledigt.

    ~closed~

    Mfg,

    Kolazomai
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.