2014-03-12 86 views
1

我使用Java進行編程,並且無法獲取以下代碼進行編譯。錯誤(表達式的非法開始)顯示在不能在構造函數中聲明私有變量?

private final int YA; 

但是,當我刪除所有變量的私人修改,它編譯罰款。

我還沒有能夠在網上找到一個解決方案,我的大部分搜索最終都會遇到關於使構造函數爲私有的問題(我不打算這麼做)。真正得到我的是我編寫了另一個遵循相同格式的類,即構造函數中的私有最終變量,它編譯時沒有問題。

我是新來的Java,所以我可能會錯過這裏真正骨頭的東西。如果是這樣,請溫柔。

乾杯和謝謝。

public class IndividualTaxCalculator { 

    IndividualTaxCalculator(int inYearAssessment) { 

     private final int YA; 
     YA = inYearAssessment; 

     switch (YA) { 

      case 2013: 

       private float netEmploymentIncome;  // BTC cell H16 
       private float totalIncome;    // BTC cell H27 
       private float assessableIncome;   // BTC cell H31 
       private float chargeableIncome;   // BTC cell H49 
       private float taxPayableOnChargeable; // BTC cell H51 
       private float incomeTaxRebate;   // BTC cell H53 
       private float taxPayableAfterRebate; // BTC cell H55 
       private float parenthoodTaxRebate;  // BTC cell H57 
       private float netTaxPayable;   // BTC cell H59 

       break; 

     } 

    } 

} 
+1

閱讀: http://stackoverflow.com/questions/11832001/why-access-specifiers-cant-be-used-for-variables-declared-inside-method-in-a-ja – ruhungry

回答

4

移動部件的構造之外:

private final int YA; 

IndividualTaxCalculator(int inYearAssessment) { 
    YA = inYearAssessment; 
    // .. 
} 

請不要在名字大寫字母的非靜態成員。這些用於常量。

使用

private final int ya; 

代替。

+0

是不是總決賽資本化? –

+0

我從來沒有見過用帽子寫的'final'。 – 2014-03-12 14:15:08

+0

但最終值是不變的。 –

0

您只能使用私有/公共/上成員保護這樣

public class IndividualTaxCalculator { 
    private int foo; 
    private int bar; 
    .... 
} 

當你在聲明的方法的變量,該變量只能在方法來訪問。

0

當你在Java中創建一個類時,它的成員變量必須在類內聲明,但不在任何方法中聲明。成員變量是您想要在您的類的任何方法中訪問的成員變量,並且是需要訪問修飾符的成員變量,例如私有變量。

因此,我建議你的代碼,將移動所有變量在構造函數外部聲明,並在構造函數中初始化它們(如果YA == 2013)。所以,重構你的代碼有點:

public class IndividualTaxCalculator { 
    private float netEmploymentIncome;  // BTC cell H16 
    private float totalIncome;    // BTC cell H27 
    private float assessableIncome;   // BTC cell H31 
    private float chargeableIncome;   // BTC cell H49 
    private float taxPayableOnChargeable; // BTC cell H51 
    private float incomeTaxRebate;   // BTC cell H53 
    private float taxPayableAfterRebate; // BTC cell H55 
    private float parenthoodTaxRebate;  // BTC cell H57 
    private float netTaxPayable;   // BTC cell H59 

    IndividualTaxCalculator(int inYearAssessment) { 
     switch (inYearAssessment) { 
      case 2013: 
       // Initialize the variables here 

       break; 
     } 
    } 
} 
0

不,你不能..你可以聲明這些私有變量在構造函數之外,你可以給它們賦值。

相關問題