Java, «Имя переменной» не может быть преобразовано в переменную - PullRequest
17 голосов
/ 28 сентября 2011

Я использую 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;
    }
}

Что вызывает это сообщение об ошибке?

Ответы [ 3 ]

11 голосов
/ 28 сентября 2011

Если вы посмотрите на область действия переменной 'hoursWorked', то увидите, что она является членом класса (объявленного как private int)

Две переменные, с которыми у вас возникли проблемы, передаются в качестве параметров конструктору.

Сообщение об ошибке вызвано тем, что в установщике отсутствуют «часы».

9 голосов
/ 28 сентября 2011
public void setHoursWorked(){
    hoursWorked = hours;
}

Вы не определили hours внутри этого метода.часы не передаются как параметр, они не объявляются как переменные и не используются в качестве члена класса, поэтому вы получаете эту ошибку.

3 голосов
/ 15 сентября 2013

Я заметил странное поведение Eclipse версии 4.2.1, сообщающее мне эту ошибку:

String cannot be resolved to a variable

С этим кодом Java:

if (true)
    String my_variable = "somevalue";
    System.out.println("foobar");

Вы могли бы подумать, что этот код оченьпрямо, условное условие истинно, мы устанавливаем my_variable в somevalue.И это должно напечатать foobar.Правильно?

Неправильно, вы получаете вышеупомянутую ошибку времени компиляции.Eclipse пытается помешать вам сделать ошибку, предполагая, что оба оператора находятся в операторе if.

Если вы поместите фигурные скобки вокруг условного блока, например:

if (true){
    String my_variable = "somevalue"; }
    System.out.println("foobar");

Затем он компилируетсяи работает нормально.Очевидно, условные скобки с плохими скобками - это хорошая игра для генерации ошибок времени компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...