2011-09-28 9 views
13

utilizo Eclipse utilizando Java, me sale este error:Java, "Nombre de la variable" no se puede resolver de una variable

"Variable name" cannot be resolved to a variable. 

Con este programa 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; 
    } 
} 

Lo que hace que este mensaje de error ?

Respuesta

8

Si nos fijamos en el ámbito de la variable 'hoursWorked' se verá que es un miembro de la clase (declarado private int)

Las dos variables que están teniendo problemas con se pasan como parámetros a el constructor

El mensaje de error se debe a que 'horas' está fuera del alcance en el colocador.

9
public void setHoursWorked(){ 
    hoursWorked = hours; 
} 

No ha definido hours dentro de ese método. horas no se pasa como un parámetro, no se declara como una variable, y no se está utilizando como miembro de la clase, por lo que se obtiene ese error.

3

he notado un comportamiento extraño con Eclipse versión 4.2.1 mí entregar este error:

String cannot be resolved to a variable 

Con este código Java:

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

Se podría pensar que este código es muy sencillo, el condicional es verdadero, establecemos mi_variable en algún valor. Y debería imprimir foobar. ¿Derecha?

Incorrecto, obtiene el error de tiempo de compilación mencionado anteriormente. Eclipse está tratando de evitar que cometas un error al asumir que ambas declaraciones están dentro de la declaración if.

si se pone los frenos en todo el bloque condicional como esto:

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

Luego se compila y ejecuta bien. Los condicionales aparentemente mal entre paréntesis son un juego justo para generar errores de tiempo de compilación ahora.

Cuestiones relacionadas