无法在构造函数中声明私有变量?

时间:2014-03-12 14:01:30

标签: java constructor

我使用Java进行编程,但我无法编译以下代码。错误(非法开始表达)显示在

private final int YA;

但是,当我删除所有变量上的private修饰符时,它编译得很好。

我还没有能够在网上找到解决方案,而且我的大多数搜索最终都会出现关于让构造函数变得私有化的问题(我不想这样做)。我真正得到的是我编写了另一个遵循相同格式的类,构造函数中的私有final变量,并且编译没有问题。

我是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;

        }

    }

}

4 个答案:

答案 0 :(得分:4)

将成员移到构造函数之外:

private final int YA;

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

请不要用大写字母命名非静态成员。这些用于常量。

使用

private final int ya;

代替。

答案 1 :(得分:0)

您只能在 成员

上使用私人/公共/受保护

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

在方法中声明变量时,只能在方法中访问该变量。

答案 2 :(得分:0)

当你在Java中创建一个类时,它的成员变量必须在类中声明,但不在任何方法之外。成员变量是您想要在类的任何方法中访问的变量,并且是需要访问修饰符的变量,例如private。

因此,我建议你的代码,将所有变量移到构造函数外部声明,如果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;
        }
    }
}

答案 3 :(得分:0)

不,你不能..你可以在构造函数之外声明那些私有变量,你可以为它们赋值。