2017-02-10 3 views
0

Ich mache eine Aufgabe für die Schule (so kann ich leider keine Bibliotheken von Drittanbietern verwenden) und das Ziel ist es, eine CSV-Datei in ein Array zu lesen, in einer anderen Methode zu bearbeiten, und drucke es in einem anderen. Das ist, was ich habe bisher aber ich habe den Fehler:Java - Datei lesen in einen Array Fehler

Type mismatch: cannot convert from List<String> to Collection<? extends String[]>. 

Hier ist mein Code:

package client.java; 

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public abstract class Client{ 

String file = "bank-Detail.csv"; 
ArrayList<String[]> bank = new ArrayList<>(); 

public Client(String file) { 
    this.file = file; 
} 

public void readData() throws IOException { 
    int count = 0; 
    String file = "bank-Detail.txt"; 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line = ""; 
     while ((line = br.readLine()) != null) { 

      bank.addAll(Arrays.asList(line.split(","))); 

Die Leitung (Arrays.asList (line.split (""))); ist wo ich den Fehler bekomme.

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

      String[][] numbers = (String[][]) bank.toArray(new String[bank.size()][12]); 

     } 
    } catch (FileNotFoundException e) { 

    } 
} 

public void processData() { 


} 

public void printData() { 

} 
+1

In 'bank.add (line.split (", ")) ändern;' – Andreas

+1

'Arrays.asList()' konvertiert von 'String []' nach 'List '. 'bank.addAll()' erwartet eine 'Liste '. Vielleicht möchten Sie 'bank.add (line.split (", "))' 'anrufen? – shmosel

Antwort

0

ArrayList<String[]> bank ist eine Liste von Arrays, so dass er anstatt das zu tun

bank.addAll(Arrays.asList(line.split(",")));

Sie nur

bank.add(line.split(","));

Here ‚s javadoc für Split-Methode tun müssen, gibt ein Array von String zurück, das wir in die Liste aufnehmen müssen .

0

Jeder Eintrag Ihrer Liste bank ist ein Array von String. Aber Aber an dieser Linie

bank.addAll(Arrays.asList(line.split(","))); 

Sie versuchen, eine Liste der Zeichenfolge hinzuzufügen List<String> zu bankaddAll verwenden. Aber wenn Sie addAll verwenden möchten, müssen Sie List<String []> hinzufügen. Es gibt ein kleines Update für Ihr Problem:

bank.add(line.split(",")) 

Als line.split(",") wird eine Reihe von String zurück. Und du bist gut zu gehen.