Я программирую на 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;
}
}
}
Переместите элемент вне конструктора:
private final int YA;
IndividualTaxCalculator(int inYearAssessment) {
YA = inYearAssessment;
// ..
}
И, пожалуйста, не назовите нестатический элемент в прописных буквах. Они используются для констант.
использование
private final int ya;
вместо.
Когда вы создаете класс в 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;
}
}
}
Вы можете использовать только частный/общественный/защищенный член
public class IndividualTaxCalculator {
private int foo;
private int bar;
....
}
Пока вы объявляете переменную в методе, к переменной можно обращаться только в методе.
нет, вы не можете.. вы можете объявить эти частные переменные за пределами конструктора, и вы можете присвоить им значения.
final
написанный заглавными буквами.