Einlesen der CSV-Datei zeilenweise ein und analysieren es

Ich habe eine CSV Datei, die ich brauche, um zu Lesen, Zeile für Zeile mit Hilfe eines Scanner und speichern nur Land-Namen in ein array von strings. Hier ist meine CSV-Datei:

World Development Indicators
Number of countries,4
Country Name,2005,2006,2007
Bangladesh,6.28776238,13.20573922,23.46762823
"Bahamas,The",69.21279415,75.37855087,109.340767
Brazil,46.31418452,53.11025849,63.67475185
Germany,94.55486999,102.2828888,115.1403608

Dies ist, was ich habe, so weit:

public String[] getCountryNames() throws IOException, FileNotFoundException{
    String[] countryNames = new String[3];
    int index = 0;
    BufferedReader br = new BufferedReader(new FileReader(fileName));
    br.readLine();
    br.readLine();
    br.readLine();
    String line = br.readLine();
    while((br.readLine() != null) && !line.isEmpty()){
        String[] countries = line.split(",");
        countryNames[index] = countries[0];
        index++;
        line = br.readLine();
    }
    System.out.println(Arrays.toString(countryNames));
    return countryNames;
}

Ausgabe:

[Bangladesh, Brazil, null]

Für einige Grund, es überspringt die "Bahamas" und kann nicht Lesen, Deutschland. Bitte helfen Sie mir, habe ich fest an diese Methode für die Stunden schon. Vielen Dank für Ihre Zeit und Mühe. Die Rückgabe sollte ein array von Strings (Land name).

  • Verwenden Sie eine geeignete parsing-Bibliothek, wie Apache Commons CSV oder OpenCSV
  • Wann immer Sie anrufen br.readline() Sie sind effektiv eine neue Zeile Lesen. Es spielt keine Rolle, wenn Sie tun, es innerhalb oder außerhalb der Schleife oder einfach nur zum Vergleich.
Schreibe einen Kommentar