NullPointerExeption in for-Schleife - Warum?

jonas.r

Mitglied
Ich weiß, mal wieder so eine doofe Frage von einem Anfänger😳

Und zwar gibt mir der Compiler in folgender Methode eine NullPointerExeption:

Java:
public void EndungWeg(){
			for(int i=0; i<fileList.length; i++){
				fileListOhneEndung[i]=fileList[i].replaceAll(".txt", "");				
			}
}

Die fileListohneEndung und die fileList werden vorher über dem Konstruktor initialisiert mit:

Java:
		String[] fileList;
		String[] fileListOhneEndung;

Die fileList wird mit folgender Methode vorher mit Daten gefüllt (Das funktioniert sehr gut. Die ArrayList soll nur später in eine JList eingefügt werden und ich will das ".txt" da weg haben):

Java:
		public void leseVerzeichnisAus(){
			//Verzeichnis auslesen:			
					 fileList = dir.list(new FilenameFilter() {					    
						 public boolean accept(File d, String name) {
					       return name.endsWith(".txt");
  				    	 }
					 });
		}


Was ist mein Fehler?
Vielen Dank schonmal für die Hilfe!
 
Und zwar gibt mir der Compiler in folgender Methode eine NullPointerExeption:
Das geschieht mit absoluter Sicherheit nicht, der Compiler wird niemals diese Fehlermeldung produzieren. Zur Laufzeit wird die Virtual Machine diesen Fehler produzieren.

Stell mal sicher, dass
Code:
fileListOhneEndung
nicht
Code:
null
ist. Z.B. so:
Java:
public void endungWeg(){
  fileListOhneEndung = new String[ fileList.length ];
  for( ... )

Wenn das nichts nützt, wird
Code:
fileList
Code:
null
sein, und irgendwo sind Variablen durcheinander gebracht worden. In dem Fall solltest du das mehr Code zeigen.
 
Dann die VirtualMachine, war mir unsicher...
Erstmal danke für die Antworten=)

@Beni: Hab das eingefügt, jetzt kommt noch ein ganzer Haufen mehr Fehlermeldungen dazu :S
@TKausL: Die ArrayList fileList kann doch an garkeiner Stelle null sein. Oder irre ich mich? In der Methode leseVerzeichnisAus() wird sie doch mit Inhalt gefüllt.

Ich denke ich poste hier nochmal mehr Quelltext:
Java:
package de.jonas.stromkostenrechner;

//Importierungen

public class Hauptfenster extends JFrame {
	private static final long serialVersionUID = 1L;

		JList<String> geräteListeJList;
		String[] fileList;
		String[] fileListOhneEndung;
		JScrollPane geräteListeJScroll;

//Andere, jetzt nicht wichtige Initialisierungen

Hauptfenster (){						
			super (überschriftt);
			setSize(xgrößeFrame,ygrößeFrame);
			setLocationRelativeTo(null);
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			getContentPane().setBackground(c);			
			setLayout(null);

			geräteListeJList = new JList<String> (fileListOhneEndung);
			geräteListeJList.setVisibleRowCount(4);
			geräteListeJList.setFont(fontallgemein);
			geräteListeJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

			aktualisiereListeJButton = new JButton("Aktualisiere die Liste");
			aktualisiereListeJButton.setFont(fontallgemein);
			aktualisiereListeJButton.addActionListener(new AktualisiereListListener());
			aktualisiereListeJButton.setBounds(xposALButton, yposALButton, längebuttonAL, allgemeinehöhe);

			geräteListeJScroll= new JScrollPane(geräteListeJList);
			geräteListeJScroll.setBounds(xposScroll, yposScroll, breitescroll, höhescroll);
	
//Noch JLabel´s und JTextField´s und ein JButton - Unwichtig

			leseVerzeichnisAus();	
			endungWeg();

add(geräteListeJScroll);
add(aktualisiereListeJButton);

	setResizable(false);
			setVisible(true);

		}

		public class AktualisiereListListener implements ActionListener {

			public void actionPerformed(ActionEvent arg0) {				
				aktualisiereListe();

			}
			
		}

		public void leseVerzeichnisAus(){
			//Verzeichnis auslesen:			
					 fileList = dir.list(new FilenameFilter() {					    
						 public boolean accept(File d, String name) {
					       return name.endsWith(".txt");
  				    	 }
					 });
		}
		
		public void endungWeg(){
			fileListOhneEndung = new String[ fileList.length ];
			for(int i=0; i<fileList.length; i++){
				fileListOhneEndung[i]=fileList[i].replaceAll(".txt", "");				
			}
		}
		
		public void aktualisiereListe(){
			leseVerzeichnisAus();	
			endungWeg();
			geräteListeJList.setListData(fileListOhneEndung);
			
		}
}
 
Da hab ich mich villeicht nicht richtig ausgedrückt. Ich meine die ArrayList kann HIER nicht null sein, da sie Ja mit Inhalt befüllt wird. Außerdem ist die nicht das Problem, die VirtualMachine sagt mir der Fehler ist in der Zeile:
Java:
				fileListOhneEndung[i]=fileList[i].replaceAll(".txt", "");

UND vorher hab ich die Endung einfach dran gelassen, und da hat alles super funktioniert! Nur jetzt stört es mich hlat
und beim MethodenAufruf ( Endungweg(); ) im Konstruktor...
 
Vorher, vorher...
Die Fehlermeldung sagt dir schlicht und einfach, das einer der Strings in der fileList null ist.
Gib sie dochvorher einmal aus.

Java:
System.out.println(Arrays.toString(fileList));
fileListOhneEndung[i]=fileList[i].replaceAll(".txt", "");
 

Neue Themen


Zurück
Oben