Java,“variables名”不能parsing为variables
我使用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; } }
什么原因导致这个错误信息
如果您查看variables“hoursWorked”的范围,您将看到它是该类的成员(声明为private int)
你遇到的两个variables作为parameter passing给构造函数。
错误消息是因为“小时”超出了setter的范围。
public void setHoursWorked(){ hoursWorked = hours; }
您没有在该方法中定义hours
。 小时数不作为parameter passing,它不是作为variables声明的,也不是作为类成员使用的,所以你会得到这个错误。
我已经注意到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");
然后编译并运行正常。 显然,括号内的条件是现在编译时错误的公平游戏。