Java catch Exception e und Variablenweitergabe

Hallo Gemeinde,

ich möchte gern ein kleines Programm erstellen zu Übungszwecken. Hier mal der Code, wie es soweit aussieht:

import java.io.\*;
public class MyCommand {

public static void deleteTree( File path )
 {
 for ( File file : path.listFiles() )
 {
 if ( file.isDirectory() )
 deleteTree( file );
 file.delete();
 }
 path.delete();
} 
public static void kundenOrdnerAnzeigen(){
 System.out.println("Kunden Ordner:");
 File dir = new File("/Users/macbookair/Documents/Rechnung/");
 File[] fileList = dir.listFiles();
 for(File f : fileList) {
 System.out.println(f.getName());
 }
 kundenOeffnen();
}



public static void kundenOeffnen(){
 System.out.println("Ordner öffnen: 1");
 System.out.println("Zurück zum Menü: 2");
 BufferedReader in = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input;
 try { 
 input = in.readLine();
 if (input.equals("1")) {
 System.out.println("Ordner Name eingeben:");
 BufferedReader in2 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input2;
 try { 
 input2 = in.readLine();
 File dir = new File("/Users/macbookair/Documents/Rechnung/"+input2);
 File[] fileList = dir.listFiles();
 for(File f : fileList) {
 System.out.println(f.getName());
 }
 System.out.println("Ordner öffnen: 1");
 System.out.println("Ordner löschen: 2");
 System.out.println("Zurück zum Menü: 3");


 BufferedReader in3 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input3;
 try { 
 input3 = in.readLine();

 if (input3.equals("1")) { 
 System.out.println("Ordner Namen eingeben:");

 BufferedReader in4 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input4;
 try { 
 input4 = in.readLine();
 File dir2 = new File("/Users/macbookair/Documents/Rechnung/"+input2+"/"+input4+"/");
 File[] fileList2 = dir2.listFiles();
 for(File f : fileList2) {
 System.out.println(f.getName());
 }
 }catch (Exception e){} 


 System.out.println("Datei löschen: 1");
 System.out.println("Zurück zum Menü: 2");

 BufferedReader in6 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input6;
 try { 
 input6 = in.readLine();
 if (input6.equals("1")) {


 System.out.println("Datei löschen:");
 BufferedReader in7 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input7;
 try { 
 input7 = in.readLine();
 System.out.println(input7);
 } catch (Exception e){} 


 }if (input6.equals("2")) {
 kundenMenue(); 
 }
 } catch (Exception e){} 

 }if (input3.equals("2")) {

 System.out.println("Ordner löschen:");
 BufferedReader in5 = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input5;
 try { 
 input5 = in.readLine();
 deleteTree( new File("/Users/macbookair/Documents/Rechnung/"+input2+"/"+input5+"/") );
 System.out.println("Der Kunden Ordner "+input2+"/"+input5+" wurde gelöscht.");
 kundenMenue(); 
 } catch (Exception e){} 

 }if (input3.equals("3")) {
 kundenMenue(); 
 }
 }catch (Exception e){} 
 } catch (Exception e){} 
 }if (input.equals("2")) {
 kundenMenue(); 
 }
 } catch (Exception e){} 
}

public static void kundenOrdnerLoeschen(){
 System.out.println("Ordner löschen:");
 BufferedReader in = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input;
 try { 
 input = in.readLine();
 deleteTree( new File("/Users/macbookair/Documents/Rechnung/"+input) );
 System.out.println("Der Kunden Ordner "+input+" wurde gelöscht.");
 } catch (Exception e){} 
 kundenMenue();
}

public static void kundenMenue(){
 System.out.println("Dateiverwaltung");
 System.out.println("Kunden Ordner anzeigen: 1"); 
 System.out.println("Kunden Ordner löschen: 2 "); 

 BufferedReader in = new BufferedReader( 
 new InputStreamReader(System.in)); 
 String input;

 try { 
 input = in.readLine();
 if (input.equals("1")) {
 kundenOrdnerAnzeigen(); 
 }if (input.equals("2")) { 
 kundenOrdnerLoeschen();
 }
} catch (Exception e){} 
} 


public static void main(String[] args) {
 kundenMenue();
}
}

Über die Konsole kann man im gewissen Umfeld Ordner Öffnen und Dateien Ordner Löschen.

Fragen:

  1. Wie bekomme ich an dieser Stelle die Variablen Input 4 eingefügt, die ich für die Pfadangabe zum löschen der Datei brauche? Input 2 kann ohne Probleme übergeben werden.

    String input7;
    try {
    input7 = in.readLine();
    System.out.println(---------------);
    } catch (Exception e){}

Mfg

MOD: Pre-Tag eingefügt

Das wovor dein Compiler dich hier warnt ist eine NullpointerException. Deine Variable hast du zwar deklariert aber nicht initialisiert.

Der unterschied ist folgender:

public String string1; // Variable deklariert  
  
string1 = "blubbbbb"; // Variable initialisiert  
  
public String2 = null; // Variable deklariert und gleichzeitig initialisiert  

Wenn eine Variable nicht initialisiert wurde und ihre werte nur eventuell in verzweigungen oder schleifen erhält, mag der Compiler das nicht.

Mein Tipp: Da der Speicher eh schon reserveirt wird wenn du die Variable deklarierst, kannst du sie auch gleich immer initialisieren. Endweder mit null oder mit einem leeren String ( „“; ).

HTH

David