我使用Java使用Eclipse,我收到此错误:
"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;
}
}
导致此错误消息的原因是什么?
答案 0 :(得分:11)
如果查看变量'hoursWorked'的范围,您会看到它是该类的成员(声明为private int)
您遇到问题的两个变量将作为参数传递给构造函数。
错误消息是因为“小时”超出了设置器中的范围。
答案 1 :(得分:9)
public void setHoursWorked(){
hoursWorked = hours;
}
您尚未在该方法中定义hours
。小时不作为参数传入,它不会被声明为变量,并且它不会被用作类成员,因此您会收到该错误。
答案 2 :(得分:3)
我注意到Eclipse版本4.2.1的奇怪行为给我带来了这个错误:
String cannot be resolved to a variable
使用此Java代码:
if (true)
String my_variable = "somevalue";
System.out.println("foobar");
您会认为此代码非常简单,条件为真,我们将my_variable设置为某个值。它应该打印foobar。对?
错误,您收到上述编译时错误。 Eclipse试图通过假设两个语句都在if语句中来防止你犯错。
如果你在条件块周围加上大括号:
if (true){
String my_variable = "somevalue"; }
System.out.println("foobar");
然后它编译并运行正常。显然,包括在内的条件错误是公平的游戏,现在可以产生编译时错误。