Erste Schritte Was mache ich in meinem Code falsch.

java_anfänger123

Neues Mitglied
Hallo alle zusammen,

ich bin noch Anfänger beim Programmieren und habe einen NullPointerException Fehler, denn ich nicht verstehe.
Das Ziel des Programmes soll es sein, automatisch Filmtitel von einer Festplatte mit Filmtiteln auf 7 verschiedenen SD-Karten zu vergleichen.
Dafür habe ich 3 Klassen angelegt: Speicherkarten, Festplatte, Vergleiche
Innerhalb meiner main Methode in Vergleiche rufe ich die Funktion Filelist() in Klasse Speicherkarten auf und dort habe ich meinen Fehler laut Compiler in Zeile 36.
Leider weiß ich nicht warum.
Ich würde mich freuen, wenn mir jemand helfen könnte meinen Fehler zu finden.

Danke im Voraus,
Jan.

[CODE lang="java" title="Die Klasse Speicherkarte" highlight="36"]
import java.io.File;
import java.util.ArrayList;
import javax.swing.filechooser.FileSystemView;

public class Speicherkarten {
long GesammtGröße;
public ArrayList<Long> FilmFilesGrößen = new ArrayList<Long>();
public ArrayList<File> FilmFiles = new ArrayList<File>();
public File Ordner[];
public File SpeicherQuelle;
public String SDname;
public static Speicherkarten[] Karten;

public static void Filelist() {

File[] roots = File.listRoots();
ArrayList<File> rootsclean = new ArrayList<File>();

for (int i = 0; i < roots.length; i++) {
if (FileSystemView.getFileSystemView().getSystemDisplayName(roots).contains("filme_")) {
rootsclean.add(roots);
}
}

File[] Speichermedien = new File[rootsclean.size()];

SpeicherKartenLaengeDef(Speichermedien.length);

for (int i = 0; i < rootsclean.size(); i++) {
Speichermedien = rootsclean.get(i);
}

// bis hier klappt es

for (int i = 0; i < Speichermedien.length; i++) {
Karten.SDname = FileSystemView.getFileSystemView().getSystemDisplayName(Speichermedien); //Fehler laut Compiler
Karten.SpeicherQuelle = Speichermedien;
Karten.GesammtGröße = Karten.SpeicherQuelle.getTotalSpace();
Karten.Ordner = Karten.SpeicherQuelle.listFiles();
for (int u = 0; u < Karten.Ordner.length; u++) {
try {
File zwisch[] = Karten.Ordner.listFiles();
for (int r = 0; r < zwisch.length; r++) {
Karten.FilmFiles.add(zwisch[r]);
Karten.FilmFilesGrößen.add(zwisch[r].length());
}
} catch (NullPointerException e) {
// falls Genre-Ordner in Karte leer
}
}

}

for (int i = 0; i < Karten.length; i++) {
for (int u = 0; u < Karten.FilmFiles.size(); u++) {
if (Karten.FilmFilesGrößen.get(u) <= 10000) {
Karten.FilmFiles.remove(u);
Karten.FilmFilesGrößen.remove(u);
u--;
}
}
}

}

public static void SpeicherKartenLaengeDef(int laenge) {
Karten=new Speicherkarten[laenge];
}

}
[/CODE]
 
Hat sich erledigt habe den Fehler gefunden
Trotzdem eine Anmerkung: in Java gibt es Konventionen zur Benennung der Bezeichner, an die man sich wirklich halten sollte. Heißt: Namen von Variablen, Parametern und Methoden schreibt man in lowerCamelCase, Typbezeichner (Klassennamen & Co.) in UpperCamelCase. Und auf Umlaute sollte man im Code verzichten, das führt u. U. zu Problemen (wie Du beispielsweise schon an Deinem Beitrag oben sehen kannst, funktioniert das Syntax-Highlighting wegen der Umlaute nicht richtig).
 

Zurück
Oben