OOP StringTokenizer, Zuweisung der einzelnen Attribute

T

Timo4231

Gast
Hallo zusammen,

ich lese eine Datei ein und nehme sie mit StringTokenizer auseinander. Ich hätte gerne nun das die einzelnen zerlegten Stücke jeweils einer Variablen zugewiesen werden können, nämlich in Name, Vorname usw. Ich weiß nicht wie ich das programmtechnisch hinkriegen soll.

Vielen Dank schonmal für eventuell schnelle Hilfen :)

Hier ist der Code:

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;

public class LeseKlasse {

    static Scanner sc = new Scanner(System.in);

    static String pfad;

    public static void main(String[] args) throws IOException {
        try {
            System.out
                    .println("Geben sie den Pfad der Datei an, die gelesen werden soll.");
            pfad = sc.next();
            /**
             * Durch den Pfad wird dem BufferedReader die zu lesende Datei
             * eingespeist.
             */
            FileReader fileReader = new FileReader(new File(pfad));
            BufferedReader buffReader = new BufferedReader(fileReader);
            /**
             * "tmp" wird initialisiert.
             */
            String tmp = "";
            /**
             * Lese, bis "tmp" keinen Wert mehr hat.
             */

            while ((tmp = buffReader.readLine()) != null) {

                /**
                 * Durch ein Trennzeichen (hier ",") voneinander getrennte
                 * Zeichen
                 */

                StringTokenizer st = new StringTokenizer(tmp, ",");
                /**
                 * trenne den String durch das Trennzeichen
                 */
                ;
                /**
                * Zu Testzwecken gedacht gewesen
                */
                while (st.hasMoreTokens()) {
                    /**
                     * Token für Token ausgeben (Testzweck)
                     */
                    System.out.println(st.nextToken());
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("Datei konnte nicht gefunden werden.");
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
Java:
List<String> abc = new ArrayList<String>();
while (st.hasMoreTokens()) {
   abc.add(st.nextToken());
}

man müsste halt wissen, was du für eine Datei einliest, um eine passendere Lösung zu liefern...

grüße
nrg
 
S

SlaterB

Gast
ne Liste ist ja auch nicht viel anders als der Tokenizer,
war nicht nach

String name = st.nextToken();
String vorname = st.nextToken();
usw.
gefragt?

--------

Kommentare wie
/**
* "tmp" wird initialisiert.
*/
besser verkneifen, für dich selber bring das doch nichts und selbst wenn es eine Aufgabe ist, will so triviales wohl niemand lesen,

wenn doch, schreibe
// "tmp" wird initialisiert.
das ist wenigstens nur eine Zeile und zerstört den Code nur um 1/3
 

eRaaaa

Top Contributor
Ich hätte gerne nun das die einzelnen zerlegten Stücke jeweils einer Variablen zugewiesen werden können, nämlich in Name, Vorname usw.

Sind die in einer eigenen Klasse oder wie?

List<X> abc = new ArrayList<X>();
......
abc.add(new X(st.nextToken(),st.nextToken());

???:L

Magst du uns nicht was über deine Textdatei erzählen? Wie ist sie aufgebaut, wie sieht deine Klasse aus etc.? So kann man ja jetzt ansonsten noch stundenlang weiter raten..
 

nrg

Top Contributor
ne Liste ist ja auch nicht viel anders als der Tokenizer,
war nicht nach
ja da hast du wohl recht :). wie gesagt, um eine wirklich passende Lösung zu finden, bräuchte man eben ein paar mehr informationen.

Man müsste halt wissen, wie eine Entität der Inputdatei aussieht... Dann könnte man zb xListen, Arrays oder whatever nehmen..
 
T

Timo4231

Gast
Sorry leute, hatte ich vergessen.
Es ist keine große Datei, es steht lediglich folgendes drin.



Becker,Heinz,31.12.1975,75000,Bahnhofstr.1,88888,München
Gutfried,Frida,24.08.1966,65000,Vogelanger 2,82319,Starnberg
Schmalspur,Josef,01.01.1980,35000,Landsbergerstr. 15,82110,Germering
Maier,Emil,13.07.1977,45000,Katharinenstr. 1,86899,Landsberg am Lech



Die Stücke sind halt immer bis zum nächsten Komma, wie der code schon sagt ein token eben^^
 

nrg

Top Contributor
Jetz wär vllt noch zu Überlegen, was du damit danach machen willst aber ich würde hier ein StringArray[7] pro Entität nehmen und das in eine Liste packen.
 
T

Timo4231

Gast
Später muss das ganze zeugs dann sortiert werden noch. Ich möchte nach Aufforderung der Pfadeingabe durch den Benutzer, dass er ein Suchkriterium eingeben kann und demnach später sortiert wird. Also beispielsweise ich sage nach Namen, dann sollen die Namen in alphabetischer Reihenfolge ausgegeben werden.
 

nrg

Top Contributor
so z.b.

Java:
        String tmp = "";
        List<String[]> input = new ArrayList<String[]>();
        while ((tmp = buffReader.readLine()) != null) {
        	String[] entity = new String[7];
            StringTokenizer st = new StringTokenizer(tmp, ",");
            for (int i = 0; st.hasMoreTokens(); i++) {
                entity[i] = st.nextToken();
            }
            input.add(entity);

das knallt aber sofort, wenn du mehr als 7 Attributwerte hast bzw irgendein Attributwert ein "," enthält!

grüße
nrg
 
T

Timo4231

Gast
Könnte man nicht eine ArrayList mit undefiniertem Maximum an Werten erstellen?
Das würde dann das Problem mit der Größe des Files beheben.
 

Michael...

Top Contributor
Später muss das ganze zeugs dann sortiert werden noch. Ich möchte nach Aufforderung der Pfadeingabe durch den Benutzer, dass er ein Suchkriterium eingeben kann und demnach später sortiert wird. Also beispielsweise ich sage nach Namen, dann sollen die Namen in alphabetischer Reihenfolge ausgegeben werden.
Ich würde mir dazu eine eigene Klasse "Person" schreiben mit den Attributen Name, Vorname, ...
Diese Objekte kann man dann in eine ArrayList stecken und mit entsprechenden Comperatoren nach unterschiedlichen Kriterien sortieren.

Wenn man die Zeile einfach nur in ein String Array speichern will, geht das auch mit
String[] entity = tmp.split(",");
 

nrg

Top Contributor
@Timo4231 solang jeder Datensatz so aussieht wie o.g. funzt es auch so aber es ist nicht so leicht sortierbar (müsstest ein enum für die Attribute (Name, Vorname, etc) deklarieren und eine Methode a la sort(List l, enum e)). Ist sehr umständlich. Wenn du es so machen willst, wie du gesagt hast, wird es noch umständlicher :).

Für eine wirklich saubere und OO Lösung würde ich Michael's Vorschlag nehmen.
 
T

Timo4231

Gast
Bei dieser Zeile mault mein Eclipse und hat n Problem bei den groß- und größerzeichen

List<String[]> input = new ArrayList<String[]>();

Und des heißt ja dann, das jedes Stück in die Arraylist eingefügt wird oder?
Wie genau sage ich, dass das 1. zb der Name ist und so weiter?
 

nrg

Top Contributor
Vergess die Lösung von mir! Die hab ich gepostet, bevor ich gelesen habe, dass du das Ganze sortiert haben willst. Mach es wie Michael vorgeschlagen hat.
 
T

Timo4231

Gast
Also wie soll ich jetzt den code dann schreiben wenns mit den "<" bei arrays nicht geht?
Ich habe jetz die Klasse Personen geschrieben und dort sind die Attribute definiert. Ich bin ein wenig verwirrt jetzt wegen der arraylist, muss die in die PersonenKlasse dann wahrscheinlich oder?
 

nrg

Top Contributor
Java:
            List<Person> addressBook = new ArrayList<Person>();
            while ((tmp = buffReader.readLine()) != null) {
            	String[] entity = tmp.split(",");
            	Person person = new Person(entity[0], entity[1], entity[2], entity[3], entity[4], entity[5], entity[6]);
            	addressBook.add(person);
            }

danach in der Klasser Person Comparable implementieren und compareTo(obj) überschreiben. Dann kannste mit Collections.sort(addressBook) die Liste sortieren.

Wie das in Java5 mit Generics ist, weiß ich net :)

edit: wie wärs wenn du dir Java6 runterlädst? :D
 
T

Timo4231

Gast
Naja ich kann keine Arraylists erstellen, keine ahnung wie da die syntax lauten soll.
Ich hab auch gerade in dem buch Java von Kopf bis Fuß (behandelt Java 5.0) durchgeschaut und da steht die Syntax wie im post hier. Aber anscheinend ist die Version noch älter wo ich habe und ich bin am verzweifeln, denn ich habe nicht die Möglichkeit upzugraden auf eine aktuelle JavaVersion.
:(
 

Michael...

Top Contributor
Bei Java < 1.5 geht das mit den Generics nicht.
Du müsstes den Code dann ohne diese Ausdrücke schreiben und beim Auslesen aus der Liste einen Class cast durchführen:
Java:
List addressBook = new ArrayList();
while ((tmp = buffReader.readLine()) != null) {
    String[] entity = tmp.split(",");
    Person person = new Person(entity[0], entity[1], entity[2], entity[3], entity[4], entity[5], entity[6]);
    addressBook.add(person);
}
        
for (int i=0; i<addressBook.size(); i++) {
    Person person = (Person)addressBook.get(i);
    System.out.println(person.getWasAuchImmer());
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Problem mit Konsolenausgabe bei StringTokenizer Java Basics - Anfänger-Themen 2
B StringTokenizer Java Basics - Anfänger-Themen 11
L Textfile mit StringTokenizer einlesen und sortiert ausgeben Java Basics - Anfänger-Themen 8
M StringTokenizer macht Quatsch Java Basics - Anfänger-Themen 21
S StringTokenizer; countTokens() Java Basics - Anfänger-Themen 6
J StringTokenizer? Java Basics - Anfänger-Themen 2
V StringTokenizer für Rechenzeichen Java Basics - Anfänger-Themen 12
C StringTokenizer Delimiter " " "??? Java Basics - Anfänger-Themen 2
M java.lang.StringTokenizer Java Basics - Anfänger-Themen 4
X StringTokenizer immer nur ein Zeichen Java Basics - Anfänger-Themen 12
B Fragen zu StringTokenizer? Java Basics - Anfänger-Themen 8
M String.split() und StringTokenizer Java Basics - Anfänger-Themen 2
G StringTokenizer Java Basics - Anfänger-Themen 4
J StringTokenizer Java Basics - Anfänger-Themen 3
G Array mit Stringtokenizer füllen Java Basics - Anfänger-Themen 2
P StringTokenizer Java Basics - Anfänger-Themen 2
V StringTokenizer Java Basics - Anfänger-Themen 2
P Rexex - stringtokenizer - String funktionen allgemein Java Basics - Anfänger-Themen 3
G Java StringTokenizer Java Basics - Anfänger-Themen 2
D StringTokenizer wirft Exception Java Basics - Anfänger-Themen 9
G StringTokenizer mit unterschiedlichen Delimitern Java Basics - Anfänger-Themen 7
G StringTokenizer - jedem Zeichen einen Bezeichner zuweisen Java Basics - Anfänger-Themen 4
S schwieriger String für StringTokenizer, wie am Besten ? Java Basics - Anfänger-Themen 8
U StringTokenizer soll in String-Array schreiben Java Basics - Anfänger-Themen 19
R StringTokenizer Java Basics - Anfänger-Themen 9
V StringTokenizer Java Basics - Anfänger-Themen 10
S StringTokenizer: Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
S TreeSet und StringTokenizer Java Basics - Anfänger-Themen 6
C StringTokenizer Java Basics - Anfänger-Themen 3
A Problem StringTokenizer mit delimiters Java Basics - Anfänger-Themen 2
N Zeilenumbruch im StringTokenizer?? Java Basics - Anfänger-Themen 4
J StringTokenizer Hilfe !!!!!!!!!!! Java Basics - Anfänger-Themen 5
R Zuweisung und Rechenoperationen Java Basics - Anfänger-Themen 15
Henri Anpassung ein Schleife(Zuweisung eines Ordners) Java Basics - Anfänger-Themen 0
Henri Anpassung ein Schleife(Zuweisung eines Ordners) Java Basics - Anfänger-Themen 27
P Array, forSchleife, Zuweisung Java Basics - Anfänger-Themen 24
O this als Zuweisung Java Basics - Anfänger-Themen 5
B Postinkrement Zuweisung Java Basics - Anfänger-Themen 1
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
O ExecutorService: ThreadGroup zuweisung? Java Basics - Anfänger-Themen 2
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
J Zuweisung/Tabelle Java Basics - Anfänger-Themen 6
G OutOfBoundsException bei Array-Zuweisung Java Basics - Anfänger-Themen 2
P Erste Schritte Koordinaten Zuweisung Java Basics - Anfänger-Themen 6
Luk10 Frage zu Zuweisung Java Basics - Anfänger-Themen 7
J Zuweisung von gesicherten Werten funktioniert nicht Java Basics - Anfänger-Themen 9
J Erste Schritte Anfängerproblem Stringkonvertierung und Zuweisung Java Basics - Anfänger-Themen 2
3 Verschachtelte Zuweisung Java Basics - Anfänger-Themen 4
C Array zuweisung Java Basics - Anfänger-Themen 4
D Array-Zuweisung Java Basics - Anfänger-Themen 4
H variablen zuweisung Java Basics - Anfänger-Themen 4
B Fragen zur Initialisierung/Zuweisung der Variable + Packages erstellen Java Basics - Anfänger-Themen 4
F int zuweisung überprüfen Java Basics - Anfänger-Themen 3
hdi Verständnisfrage zu Zuweisung + Post-Inkrement Java Basics - Anfänger-Themen 3
A kurze frage zu arrays und deren zuweisung Java Basics - Anfänger-Themen 11
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
Z zuweisung this. Java Basics - Anfänger-Themen 12
S Zuweisung mit Operation "^=" Java Basics - Anfänger-Themen 2
M IntegerVariable und Zuweisung von Zahlen die mit 0 anfangen! Java Basics - Anfänger-Themen 3
H Variable zuweisung in einem If-Statement Java Basics - Anfänger-Themen 3
F Abfrage in Zuweisung mit Fragezeichen Java Basics - Anfänger-Themen 5
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
A Fragmente eines Strings zu einzelnen int konvertieren Java Basics - Anfänger-Themen 3
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
T Initialisierungen der einzelnen Klassen - Objektorientierung Java Basics - Anfänger-Themen 4
X Multi Array zu einzelnen Arrays trennen Java Basics - Anfänger-Themen 7
M Verzeichnis ausgeben mit Unterverzeichnissen und einzelnen Dateien Java Basics - Anfänger-Themen 18
K double-Wert aus einzelnen Ziffern erzeugen Java Basics - Anfänger-Themen 7
B die einzelnen Attribute einzeln vergleichen Java Basics - Anfänger-Themen 10
B Identifikation eines einzelnen Buttons aus mehreren Buttons per Schleife erzeugten Java Basics - Anfänger-Themen 4
T Einlesen von einzelnen Zeilen Java Basics - Anfänger-Themen 2
F Array - Vorkommen der einzelnen Werte ausgeben Java Basics - Anfänger-Themen 8
G Wie eine Int Zahl in die einzelnen Ziffern zerlegen? Java Basics - Anfänger-Themen 6
F Aktualisieren einer einzelnen Zelle in JTable Java Basics - Anfänger-Themen 2
H Parameterübergabe zwischen einzelnen Funktionen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben