2017-02-02 4 views
0

Ich habe Komma getrennt Strings von Schülerwerten, die ich zu einer ArrayList von Studenten hinzufügen muss. Wie auch immer, was ich zur Zeit habe, funktioniert nicht und ich bin nicht sicher, wie es weitergehen soll.Wie konvertiert man eine Zeichenfolge in eine benutzerdefinierte ArrayList

String s; 
    BufferedReader in = new BufferedReader(new FileReader(path)); 
    s = in.readLine(); 
    ArrayList<Student> slist = new ArrayList<>(); 
    while (s != null){ 
     slist.add(s); 
     s = in.readLine(); 
    } 

Die slist.add (e) funktioniert nicht wie der String, s, kann nicht

+1

Ihre 'ArrayList' ist vom' Student' Typ und Sie versuchen, 'String' Daten hinzuzufügen. Siehst du das Problem? – Yousaf

+0

's' muss nicht in eine' ArrayList' konvertiert werden. Es muss in einen 'Student' konvertiert werden. Ohne den Code für 'Student' ist es schwer zu sagen, wie das geht. – bradimus

+0

'add (s)' gibt einen booleschen Typ zurück. Es kann nicht zu "slist" hinzugefügt werden, da es vom Typ 'ArrayList ' ist. Es funktioniert nur, wenn die 'ArrayList' vom Typ' String' ist. – Chip

Antwort

0

Sehen als an einem Arraylist umgewandelt werden, wie Sie keinen Code geschrieben, wie ein Schüler zu schaffen wäre dies mein sein best rate, wie Sie Ihr Problem beheben können.

Dies funktioniert, wenn Sie einen Konstruktor für die Student-Klasse haben, die einen String als Parameter akzeptiert. Wie jeder gesagt hat, erstellen Sie eine ArrayList von Studenten und nicht von Strings. Sie müssen ein Student-Objekt erstellen, wenn Sie es Ihrer Liste hinzufügen möchten.

0

Es funktioniert nicht, weil Ihre ArrayList Elemente des Typs Student akzeptiert, aber Sie versuchen, Elemente des Typs hinzuzufügen.

Angenommen, Ihre Student-Klasse wird auf die Saiten bezogen Sie wie der Studentennamen hinzuzufügen versuchen:

class Student{ 
    private String name; 
    public Student(String name){ 
     this.name = name; 
    } 
} 

Dann können Sie es als hinzufügen:

while (s != null){ 
    slist.add(new Student(s)); //create student obj from s, then add to list 
    s = in.readLine(); 
} 
0

Wie wäre es so etwas wie :

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 

public class Main { 

    private static class Student { 
     private String firstName; 
     private String lastName; 

     public Student(String firstName, String lastName) { 
      this.firstName = firstName; 
      this.lastName = lastName; 
     } 

     public Student(String line) { 
      String[] parts = line.split(","); 
      if (parts.length > 0 && parts.length == 2) { 
       this.firstName = parts[0]; 
       this.lastName = parts[1]; 
      } 
     } 

     public String getFirstName() { 
      return firstName; 
     } 

     public Student setFirstName(String firstName) { 
      this.firstName = firstName; 
      return this; 
     } 

     public String getLastName() { 
      return lastName; 
     } 

     public Student setLastName(String lastName) { 
      this.lastName = lastName; 
      return this; 
     } 

     @Override 
     public String toString() { 
      return this.firstName + " " + this.lastName; 
     } 
    } 

    private static final String fileName = "fileName.txt"; 

    public static void main(String[] args) throws IOException { 
     String s; 
     BufferedReader in = new BufferedReader(new FileReader(fileName)); 
     s = in.readLine(); 
     ArrayList<Student> slist = new ArrayList<>(); 

     while (s != null) { 
      slist.add(new Student(s)); 
      s = in.readLine(); 
     } 

     slist.forEach(System.out::println); 
    } 
} 
Verwandte Themen