Variablenfelder (4)

Wie man Strings auseinandernimmt und zusammensetzt

Manche Datenverwaltungsprogramme speichern einfach jeden Datensatz als String. Solche Strings müssen, bevor sie verwendet werden in Felder zerlegt werden. Neue Datensätze müssen zu einem String mit festem Aufbau zusammengesetzt werden


import java.util.*;

  public class Strings {

  public static void main(String[] args) {
    Scanner Eingabe = new Scanner(System.in);
    System.out.println("Stringoperationen\n");
    System.out.println("Ein Beispieldatensatz:\n");

    String posi = "012345678901234567890123456789012345678901234567890123456789";
    String feld = "Vorname Name sGebdat Abt Gehalt ";
    String data = "Volker Mustermann m1975-08-03 17 3821.65 ";
    System.out.println(data);
                                                  // Im Folgenden wird dieser Datensatz zerlegt
    String vorname = data.substring(0,15);
    String nachname = data.substring(15,30);
    char sex = data.charAt(30);
    String gebdat = data.substring(31,41);
    int abteilung = Integer.parseInt(data.substring(42,46).trim());
    float gehalt = Float.parseFloat(data.substring(46,56).trim());
                                                  // Das Datum wird computergerecht aufbereitet
    Calendar cal = Calendar.getInstance();
    cal.set(Integer.parseInt(data.substring(31,35)),
    Integer.parseInt(data.substring(36,38))-1,
    Integer.parseInt(data.substring(39,41)));

    System.out.println();
    System.out.println("Vorname : "+vorname);
    System.out.println("Nachname : "+nachname);
    System.out.println("Geschlecht : "+sex);
    System.out.println("Geburtsdatum : "+gebdat+" bzw: "+cal.getTime());
    System.out.println("Abteilung : "+abteilung);
    System.out.println("Gehalt : "+gehalt);

    System.out.println();
    System.out.println("Geben Sie einen neuen Datensatz ein:");
    System.out.println();
    System.out.print("Vorname? : ");
    vorname=Eingabe.next();
    System.out.print("Nachname? : ");
    nachname=Eingabe.next();
    System.out.print("Geschlecht? m/w : ");
    sex=Eingabe.next().charAt(0);;
    System.out.print("Gebtag? ttmmjjjj : ");
    gebdat=Eingabe.next();
    gebdat=gebdat.substring(4,8)+"-"+gebdat.substring(2,4)+"-"+gebdat.substring(0,2);
    System.out.print("Gehalt? (Komma!) : ");
    gehalt=Eingabe.nextFloat();
    System.out.print("Abteilung? : ");
    abteilung=Eingabe.nextInt();
                                           // Über die Format-Methode werden Strings und Zahlen
                                           // auf feste Länge gebracht und zusammengefügt.
    data=String.format("%-15s%-15s%1s%10s%4d%10.2f",vorname,nachname,sex,gebdat,abteilung,gehalt);
    System.out.println();
    System.out.println("Zusammengesetzt:");
    System.out.println(feld);
    System.out.println(data);
  }
}

Aufgaben:

  1. Fordern Sie den Benutzer auf, seinen Geburtstag einzugeben und verwandeln Sie das Datum der Form tt.mm.jjjj in ein Datum der Form jjjj-mm-tt
  2. Schreiben Sie ein Programm, das den Benutzer auffordert, seinen Namen einzugeben.
    Speichern Sie diesen Namen mit String name=Eingabe.next().
    Wenn Sie in Ihrem Programmcode jetzt name. tippen, erscheinen die Methoden, mit denen Sie den Namen analysieren können.
    - Ermitteln Sie die Position des Leerzeichens zwischen Vor- und Nachnamen.
    - Ziehen Sie mithilfe der Substring()-Methode den Vornamen heraus. (Achtung: Das erste Zeichen steht an Position 0.)
    - Ermitteln Sie die Länge des gesamten Namens.
    - Ziehen Sie mithilfe der Substring-Methode und der length()-Methode den Nachnamen heraus.
    - Setzen Sie den Namen in der sortiergerechten Form "Meier, Max" neu zusammen.
  3. Eine Bank habe die folgenden fünf Kunden:
    int[] kontonr = {23,18527,991,32346,1783};
    String [] nachname = {"Uerz","Müller","Krawieitzki","Schulz-Milberg","Syn"};
    String [] vorname = {"Petra","Axel","Frank-Walter","Elisabeth","Judith"};
    double[] kontostand = {33.12, -1593,0.91,33871.66,-11.81};

    Bauen Sie diese Deklarationen in ein Programm ein, das die fünf Kontostände spaltengerecht in einer Tabelle "Kontonummer | Nachname | Vorname | Kontostand" ausgibt. Mit der format-Methode können Sie den Aufbau steuern:
    spalte1=String.format("%8s","Konto") gibt den String "Konto" mit 8 Stellen aus.
    spalte1=String.format("%-8s","Konto") stellt das Wort linksbündig.
    spalte2=String.format("%6d",id) gibt die Integervariable id sechsstellig aus.
    spalte3=String.format("%10.2f",preis) gibt die Kommavariable preis mit 7 Vor- und 2 Nachkommastellen aus.
    Formatierte Zeilen kann man wie oben gezeigt auch in einem Befehl erzeugen und mit System.out.format(...) auch direkt ausgeben. Im "Javabuch" finden Sie unter dem Stichwort format weitere Infos über Formatstrings.