2017-03-29 80 views
-2

我有我正在開發的這個代碼示例。在這裏我已經在主if-else語句之外聲明瞭兩個變量(initialPath,lastPath)。在主if語句裏面有一個嵌套的if-else語句。我已經初始化了嵌套if語句中的變量(initialPath)。我需要這個值在嵌套的if-else語句之外使用。我附上了我的代碼片段。如果有人可以幫助解決我的問題,我會很高興:)如何訪問/獲取嵌套if語句中的變量的值到主if語句之外

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

只是在你需要的地方聲明它,然後只在你的if塊內進行初始化。編輯:我剛纔看到它已經被定義在if-else語句之外,並且可以在它之外被引用。那麼你的問題到底是什麼?你想在另一種方法中使用該值嗎? –

+0

爲什麼不使用返回'File'的函數? – nbokmans

+0

不,我需要在jfilechooser中按批准/保存按鈕時獲取路徑位置。所以如果我已經在外面聲明變量,我無法獲取文件位置。 @OHGODSPIDERS –

回答

0

是否有可能爲你移動if聲明initialPath=savefile.getSelectedFile();之外?

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

不,不,先生,這不是我想要的......在嵌套的if語句中,有jfilechooser,當它出現並按下批准按鈕時,我需要獲取我保存的文件的位置。所以,如果我已經聲明瞭外部變量,就像你說的那樣,我無法獲取文件位置路徑並將其分配到lastPath中...... –

+0

真的,我需要一個選項來獲取JFilechooser最後使用的路徑:) –

0

您可以在室外聲明時使用initialPath。 「我需要在嵌套的if-else語句之外使用該值。」

在很短的例子你在做什麼:

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.*/ 
} 

初始化文件外,如果你需要在這兩個如果和別的塊,如果外界不應該需要你不能初始化,在else塊。有一個邏輯錯誤。

+0

不,不,先生,這不是我想要的......在嵌套if語句中,有jfilechooser,當它出現並按下批准按鈕時,我需要獲取我保存的文件的位置。所以如果我已經按照你所說的那樣在外面聲明瞭變量,那麼我無法獲得文件位置路徑並將其分配到lastPath中...... –

+0

真的,我需要一個選項來獲取JFilechooser最後使用的路徑:) –

+0

@Code Bae I知道這不是你想要的。這就是你現在正在做的,這就是爲什麼我說這裏有邏輯問題。 – eldo