2017-07-09 3 views
1

ich ein Problem habe, nehme ich an, wie so eine Textdatei haben:bestimmte Wörter zusammen in einer Array-Liste verketten

Name Vorname, Anzahl, Nummer ..... Zahl \ n Name des Mittel Name, Nummer, Nummer ...... Nummer \ n Name, Nummer, Nummer ..... Nummer \ n

Ich wollte die "Namen + Nachname" oder "Namen + Mitte + Nachname" in jeder Zeile behalten ein Array Listenindex. Zum Beispiel möchte ich "Name Nachname" der ersten Zeile in einem Index einer Array-Liste.

Ich habe versucht, eine String-Variable zu verwenden und die beiden Elemente in einer Schleife zusammenzufassen. Aber wie Sie sehen, sind die Namen nicht wirklich von einem bestimmten Typ. Wie würde ich es tun? Ich würde die Hilfe sehr schätzen!

Antwort

2

Nehmen wir an, Sie haben eine String Variable namens line, die eine gegebene Zeile enthält. In diesem Fall:

String namePart = line.substring(0, line.indexOf(",")); 
String dataPart = line.substring(line.IndexOf(",") + 1); 

Dies sollte Ihnen den Einstieg erleichtern.

Die erste Zeile weist den Teil der Zeile, die dem ersten Komma vorangestellt ist, auf zu. Die zweite Zeile weist dem ersten Komma den Teil der Zeile rechts zu dataPart zu. Natürlich müssen Sie dataPart teilen, indem Sie Komma als Trennzeichen verwenden und ein Array oder ähnliches erstellen und die relevanten Informationen in einen neuen Eintrag Ihres Objektsatzes einfügen.

+1

Das ist der eine - ich habe irgendwie übersehen, dass die Namen nicht durch Kommata getrennt waren. –

+1

Das dataPart sollte 'linestring (line.IndexOf (", ") + 1)' sonst enthält es das Trennzeichen selbst –

+0

@SharonBenAsher das ist richtig, danke für das Aufzeigen. –

0

Ich schlage vor, um die Linie zu spalten:

String[] parts = line.split(","); 

Dies gibt Ihnen einen Array mit allen Teilen. parts[0] enthält den Namen und alle nachfolgenden Nummern in folgenden Indizes.

1

Also habe ich getan, was in den obigen Antworten erwähnt wurde. Aber ich habe auch etwas anderes gemacht.

Code:

void readScore() { 
    int nextToken; 
    int numberOfTokens = 0; 
    String nameOfStudent = ""; 
    BufferedReader bufferedReader = null; 
    StreamTokenizer myToken; 

    // create a buffered stream to read from the file 
    try { 
     bufferedReader = new BufferedReader(new FileReader(new File(inputFileName))); 

    } catch (FileNotFoundException e) { 
     System.out.println(
       "File Not Found. Please add file in the proper directory or give the proper file path and execute"); 
     System.exit(1); // exit if file not found 
    } 
    myToken = new StreamTokenizer(bufferedReader); 
    myToken.eolIsSignificant(true); 

    try { 
     nextToken = myToken.nextToken(); 
     while (nextToken != StreamTokenizer.TT_EOF) { 
      if (nextToken == StreamTokenizer.TT_NUMBER) { 
       marks.add(myToken.nval); 
       numberOfTokens++; 
      } 
      if (nextToken == StreamTokenizer.TT_WORD) { 

       nameOfStudent += myToken.sval + " "; 
      } 
      if (nextToken == StreamTokenizer.TT_EOL) { 
       students.add(nameOfStudent); 
       nameOfStudent = ""; 
      } 
      nextToken = myToken.nextToken(); 

Es funktioniert! lassen Sie mich wissen, ob dies effizient ist. Aber es funktioniert definitiv.

Verwandte Themen