Array bleibt nicht bestehen



  • Hi!
    Ich habe ein problem mit der Initialisierung von Arrays.
    Hier erst einmal mein Code:

    main:

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		try {
    			BufferedReader bin = new BufferedReader(new InputStreamReader(
    					System.in));
    
    			System.out.println("Bitte Namen eingeben: ");
    			String name = bin.readLine();
    
    			if(name.isEmpty())
    			{
    				System.out.println("Keinen Quellpfad angegeben...");
    				System.exit(0);
    			}
    
    			Directory gen = new Directory();
    			gen.setSource(name);
    			if(gen.isDir(name)){
    				gen.setup();
    				gen.createDir();
    			}
    			else{
    				System.out.println("Der angegebene Pfad ist kein Verzeichnis...");
    				System.exit(0);
    			}
    			gen.print();
    
    		} catch (IOException e) {}
    
    	}
    

    klasse:

    public class Directory {
    
    	final private String path = "test";
    	private File site;
    	private boolean status;
    	private String source;
    	private File source_path;
    	private int count;
    	private String[] fileNames;
    	private File[] files;
    
    	public Directory() {
    		super();
    		this.status = false;
    
    	}
    
    	public void setup(){
    		this.count = this.getSource_path().listFiles().length;
    		this.files = new File[this.count];
    		this.files = this.source_path.listFiles();		
    		this.fileNames = new String[this.count];
    	}
    [...]
    public void setSource(String source) {
    		this.source = source;
    		this.setSource_path(source);
    	}
    
    	public void setSource_path(String source) {
    		this.source_path = new File(source);
    	}
    
    [...]
    public void print()
    	{
    		System.out.println(this.source_path.toString());
    		System.out.println(new Integer(this.count).toString());
    		for(int i=0; i<this.count; i++){
    			System.out.println(fileNames[i]);
    		}
    	}
    

    Ausgabe habe ich dann wie folgt,w enn ich einen ordner mit Inhalt angebe:

    Bitte Namen eingeben: 
    C:\lala
    Ordner in "C:\lala\test" erfolgreich erstellt...
    C:\lala
    25
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    null
    

    Mein Problem: Die Arrays werden nicht behalten, also er verliert anscheinend die Adressen. Wie kann ich das beheben? Ich möchte nicht in jeder Funktion erneut "files = files...listFiles()" etc. aufrufen! Programmiere noch nicht so lange in Java.

    lg



  • Entweder ich hab mich verguckt oder du füllst zwar "files" aber "fileNames" nicht; gibst aber "fileNames" aus.



  • 1. Wie Badestrand schon richtig bemerkt hat:

    Du machst this.fileNames = new String[this.count];. Das bedeutet aber, dass zB this.fileNames[3] null ist. Du musst jeden String in dem Array einzeln initialisieren.

    2. Java Code Konventionen einhalten, d.h.
    "source_path" wird zu "sourcePath"

    3. Unnötige Anweisungen nicht benutzen, bei Dir wären das

    public Directory() {
            super();  //unnötig da du keine Klasse erweiterst
            this.status = false;
    
        }
    
    this.files = new File[this.count]; //wird in der nächsten Zeile überschrieben daher also überflüssig
            this.files = this.source_path.listFiles();
    


  • vielen dank für eure hilfe!



  • tomatensalat schrieb:

    3. Unnötige Anweisungen nicht benutzen...

    dann aber auch this nur nutzen, wenn man es braucht. oder würdest du wollen, dass in einem buch das du liest, vor jedem wort die seitenzahl steht? 😉

    this.status = false // ist völliger quatsch. this weglassen -> selber effekt
    
    public void setStatus(boolean status) {
        this.status = status; // hier muss es stehen
    }
    

    sry für haarspalterei, manchmal brauch ich das einfach 🤡



  • kein ding 😃


Anmelden zum Antworten