2017-03-29 2 views
-2

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(); 
     } 
+0

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? –

+0

Warum nicht eine Funktion verwenden, die eine 'Datei' zurückgibt? – nbokmans

+0

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 –

Antwort

0

Ist es gerne für Sie möglich initialPath=savefile.getSelectedFile(); außerhalb der if Aussage zu bewegen?

initialPath=savefile.getSelectedFile(); 
if (sf == JFileChooser.APPROVE_OPTION) { 
    ... 
} 
else { 
    ... 
} 
+0

Nein, nein, das ist nicht das, was ich will ... in der verschachtelten if-Anweisung gibt es den jfilechooser, wenn es angezeigt wird und ich die Zustimmungstaste drücke, muss ich den Speicherort der Datei abrufen, die ich gespeichert habe. Wenn ich also die Variablen wie gesagt außerhalb deklariert habe, kann ich den Dateipfad nicht ermitteln und ihn dem letzten Pfad zuweisen ... –

+0

Wirklich ich brauche eine Option, um den letzten benutzten Pfad vom JFilechooser zu bekommen :) –

0

können Sie initialPath außerhalb verwenden, wie Sie es außerhalb erklärt. "Ich brauche diesen Wert außerhalb der verschachtelten if-else-Anweisung."

In einem kurzen Beispiel, was Sie tun:

File file; 
if(true){ 
    file = /*you initialize here*/; 
} else { 
    /*if false file is never initialized but you want to use it here, 
     its in scope but null of course.*/ 
} 

initialisieren außerhalb, wenn Sie sowohl wenn und sonst Blöcke benötigen sie Datei, wenn Sie es nicht initialisieren kann außerhalb Sie nicht, dass der Block in der sonst benötigen sollten . Ein logischer Fehler ist da.

+0

Nein nein mein Herr, Das ist nicht das, was ich will ... in der verschachtelten if-Anweisung gibt es den jfilechooser. Wenn es angezeigt wird und ich die Zustimmungstaste drücke, muss ich den Speicherort der Datei abrufen, die ich gespeichert habe. Wenn ich also die Variablen wie gesagt außerhalb deklariert habe, kann ich den Dateipfad nicht ermitteln und ihn dem lastPath zuweisen ... –

+0

Wirklich ich brauche eine Option, um den zuletzt verwendeten Pfad vom JFilechooser zu bekommen :) –

+0

@Code Bae I weiß, dass das nicht das ist, was du willst. Das ist es, was Sie gerade tun, deshalb habe ich gesagt, dass es hier logische Probleme gibt. – eldo

Verwandte Themen