Java,"变量名称"无法解析为变量

use*_*913 18 java variables scope

我使用Java使用Eclipse,我收到此错误:

"Variable name" cannot be resolved to a variable.
Run Code Online (Sandbox Code Playgroud)

有了这个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

是什么导致此错误消息?

Hug*_*nes 12

如果查看变量'hoursWorked'的范围,您将看到它是该类的成员(声明为private int)

您遇到问题的两个变量将作为参数传递给构造函数.

错误消息是因为'hours'超出了setter的范围.


Mar*_*c B 9

public void setHoursWorked(){
    hoursWorked = hours;
}
Run Code Online (Sandbox Code Playgroud)

您尚未hours在该方法中定义.小时不作为参数传入,它不被声明为变量,并且它不被用作类成员,因此您得到该错误.