Ich habe dieses Codebeispiel, das ich entwickelt habe. Hier habe ich zwei Variablen (initialPath, lastPath) außerhalb der if-else-Hauptanweisung deklariert. Innerhalb der If-Anweisung gibt es eine verschachtelte if-else-Anweisung. Ich habe die Variable (initialPath) in der verschachtelten if-Anweisung initialisiert. Ich brauche diesen Wert außerhalb der verschachtelten if-else-Anweisung. Ich habe mein Code-Snippet angehängt. Wenn jemand helfen kann, mein Problem zu lösen, würde ich :)Wie auf den Wert einer Variablen innerhalb einer verschachtelten if-Anweisung zugegriffen werden kann/außerhalb der Haupt-if-Anweisung ausgegeben werden
FileWriter writer;
File initialPath=null;
File lastPath=null;
if (clicked == 1) {
int sf = savefile.showSaveDialog(null);
if (sf == JFileChooser.APPROVE_OPTION) {
initialPath=savefile.getSelectedFile(); // in here the Variable values is initialized/assigned
try {
if (savefile.getFileFilter().equals(filter2)) {
String path = savefile.getSelectedFile() + ".java";
File file = new File(path);
writer = new FileWriter(file, false);
System.out.println(savefile.getFileFilter());
writer.write(jTextPane1.getText());
writer.close();
} else if (savefile.getFileFilter().equals(filter)) {
System.out.println("2");
String path = savefile.getSelectedFile() + ".txt";
File file = new File(path);
writer = new FileWriter(file, false);
writer.write(jTextPane1.getText());
writer.close();
} else {
System.out.println("No format");
}
} catch (IOException e) {
e.printStackTrace();
}
} else if (sf == JFileChooser.CANCEL_OPTION) {
clicked = 0;
}
} else {
try {
lastPath=initialPath.getParentFile(); //but in here lastPath become NULL because initialPath is NULL...
//I need to get the value of initialPath to this ELSE statement
if (savefile.getFileFilter().equals(filter2)) {
String path = savefile.getSelectedFile() + ".java";
File file = new File(path);
writer = new FileWriter(file, false);
System.out.println(savefile.getFileFilter());
writer.write(jTextPane1.getText());
writer.close();
} else if (savefile.getFileFilter().equals(filter)) {
String path = savefile.getSelectedFile() + ".txt";
File file = new File(path);
writer = new FileWriter(file, false);
writer.write(jTextPane1.getText());
writer.close();
} else {
System.out.println("No format");
}
} catch (Exception e) {
e.printStackTrace();
}
deklarieren Sie es einfach außerhalb, wo Sie es brauchen und dann nur die Initialisierung in Ihrem If-Blöcke. Edit: Ich habe gerade gesehen, dass es bereits außerhalb der if-else-Anweisung definiert ist und außerhalb davon referenziert werden kann. Also, was genau ist dein Problem? Möchten Sie den Wert in einer anderen Methode verwenden? –
Warum nicht eine Funktion verwenden, die eine 'Datei' zurückgibt? – nbokmans
Nein, ich muss den Pfadort abrufen, wenn ich die Taste zum Bestätigen/Speichern in jfilechooser drücke. Wenn ich also die Variable außerhalb deklariert habe, kann ich den Speicherort der Datei nicht ermitteln. @OHGODSPIDERS –