Java, "Имя переменной" не может быть разрешено переменной
Я использую Eclipse с помощью Java, я получаю эту ошибку:
"Variable name" cannot be resolved to a variable.
С помощью этой программы Java:
public class SalCal {
private int hoursWorked;
public SalCal(String name, int hours, double hoursRate) {
nameEmployee = name;
hoursWorked = hours;
ratePrHour = hoursRate;
}
public void setHoursWorked() {
hoursWorked = hours; //ERROR HERE, hours cannot be resolved to a type
}
public double calculateSalary() {
if (hoursWorked <= 40) {
totalSalary = ratePrHour * (double) hoursWorked;
}
if (hoursWorked > 40) {
salaryAfter40 = hoursWorked - 40;
totalSalary = (ratePrHour * 40)
+ (ratePrHour * 1.5 * salaryAfter40);
}
return totalSalary;
}
}
Что вызывает это сообщение об ошибке?
Ответы
Ответ 1
Если вы посмотрите на область переменной "hoursWorked", вы увидите, что она является членом класса (объявлена как private int)
Две переменные, с которыми вы столкнулись, передаются в качестве параметров конструктору.
Сообщение об ошибке связано с тем, что "часы" недоступны в настройщике.
Ответ 2
public void setHoursWorked(){
hoursWorked = hours;
}
Вы не определили hours
внутри этого метода. часы не передаются как параметр, он не объявляется как переменная и не используется как член класса, поэтому вы получаете эту ошибку.
Ответ 3
Я заметил странное поведение с Eclipse версии 4.2.1, доставив мне эту ошибку:
String cannot be resolved to a variable
С помощью этого кода Java:
if (true)
String my_variable = "somevalue";
System.out.println("foobar");
Вы бы подумали, что этот код очень прост, условное значение true, мы устанавливаем значение my_variable на некоторое значение. И он должен печатать foobar. Правильно?
Неправильно, вы получаете вышеупомянутую ошибку времени компиляции. Eclipse пытается помешать вам совершить ошибку, предположив, что оба оператора находятся в инструкции if.
Если вы поместите скобки вокруг условного блока следующим образом:
if (true){
String my_variable = "somevalue"; }
System.out.println("foobar");
Затем он компилируется и работает нормально. По-видимому, плохо заключенные в скобки условности являются честной игрой для генерации ошибок времени компиляции.