Identificador de error esperado en Java
-
Comprender el error
<identificador> esperado
en Java - Ejemplo 1: cuando a los parámetros de un método les falta el tipo de datos o el nombre
- Ejemplo 2: cuando las declaraciones de expresión están fuera de lugar
- Ejemplo 3: cuando las sentencias de declaración están fuera de lugar
- Conclusión
En este artículo, aprenderemos sobre el error <identificador> esperado
de Java.
Comprender el error <identificador> esperado
en Java
El <identificador> esperado
es el error de tiempo de compilación de Java más común al que se enfrentan los programadores novatos. Este error se produce cuando un parámetro de método no tiene declarado un tipo de datos o un nombre, o cuando se escribe una instrucción de expresión fuera de un método, un constructor o un bloque de inicialización.
En Java, un identificador es una secuencia de uno o más caracteres donde el primer carácter debe ser una letra o $
o _
, y los siguientes caracteres pueden ser letras, dígitos, $
o _
.
Estos identificadores se utilizan para nombrar una variable, un método, una clase, un paquete, una interfaz, etc.
Cuando se compila el código Java, la fase inicial implica el análisis léxico del programa. Aquí, el programa se clasifica en tokens, y todos los tokens, incluidos los identificadores, se verifican con un conjunto de reglas gramaticales.
Y siempre que, según las reglas gramaticales, se espera un identificador, pero no está presente, y se encuentra algo más en su lugar, el compilador genera el error <identificador> esperado
. Los corchetes angulares aquí significan una referencia a los objetos simbólicos.
Veamos algunos ejemplos para entenderlo mejor ahora.
Ejemplo 1: cuando a los parámetros de un método les falta el tipo de datos o el nombre
Los parámetros dentro de un método deben tener datos seguidos del nombre de la variable, que es un identificador; perder cualquiera de ellos inevitablemente generará el error <identificador> esperado
.
-
Faltan datos del parámetro
public class Demo { public static int square(x) { return x * x; } public static void main(String[] args) { System.out.println(square(10)); } }
Producción:
square.java:9: error: <identifier> expected public static int square(x) { ^ 1 error
Si observamos el error anterior, vemos que a la variable
x
le falta el tipo de dato. Si le damos el tipo de datos para ello, funcionará correctamente.public class Demo { public static int square(int x) { return x * x; } public static void main(String[] args) { System.out.println(square(10)); } }
Producción:
100
-
El tipo de datos del parámetro es el identificador; aquí falta el nombre de la variable.
public class Demo { public static int square(int) { return x * x; } public static void main(String[] args) { System.out.println(square(10)); } }
Producción:
square.java:9: error: <identifier> expected public static int square(int) { ^ 1 error
Si observamos el error anterior, podemos ver claramente que especificamos el tipo de datos pero no adjuntamos ningún nombre de variable.
public class Demo { public static int square(int x) { return x * x; } public static void main(String[] args) { System.out.println(square(10)); } }
Producción:
100
Ejemplo 2: cuando las declaraciones de expresión están fuera de lugar
El compilador genera un error cuando se escribe una declaración de expresión fuera de un método, un constructor o un bloque de inicialización <identificador> esperado
.
Código de ejemplo:
public class Demo {
private String name;
name = "Naruto";
System.out.println(name);
}
Producción :
Demo.java:9: error: <identifier> expected
name = "Naruto";
^
Demo.java:10: error: <identifier> expected
System.out.println(name);
^
Demo.java:10: error: <identifier> expected
System.out.println(name);
^
3 errors
Si observamos el error anterior, el error ocurre porque las declaraciones no están encerradas dentro de una función o un constructor. Escribamos estas sentencias dentro de un método llamado print
.
public class Demo {
private String name;
public void print() {
name = "Naruto";
System.out.println(name);
}
public static void main(String[] args) {
Demo obj = new Demo();
obj.print();
}
}
Producción :
Naruto
Ejemplo 3: cuando las sentencias de declaración están fuera de lugar
Esto es raro pero no inaudito cuando se trabaja con declaraciones de probar con recursos
. Todas estas declaraciones requieren que cualquier recurso que se pueda cerrar se declare inmediatamente después de la palabra clave try
.
Si la variable de recurso se declara fuera de la instrucción try-with-resources
, el compilador podría generar el error <identificador> esperado
(como compilador a compilador, esto puede variar).
Código de ejemplo: aquí, el recurso que se puede cerrar es BufferedReader
.
import java.io.*;
public class Demo {
public static void main(String[] args) {
StringBuilder obj = new StringBuilder();
BufferedReader br = null;
try (br = new BufferedReader(new InputStreamReader(System.in))) {
String lines = "";
while (!(lines = br.readLine()).isBlank()) {
obj.append(lines);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Producción :
Demo.java:13: error: <identifier> expected
try (br = new BufferedReader(new InputStreamReader(System.in))) {
^
1 error
El error se resolverá si declaramos el BufferedReader obj
dentro del bloque try
.
import java.io.*;
public class Demo {
public static void main(String[] args) {
StringBuilder obj = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String lines = "";
while (!(lines = br.readLine()).isBlank()) {
obj.append(lines);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Conclusión
En este artículo, aprendimos por qué el compilador generó el error <identificador> esperado
y cómo es el error de tiempo de compilación más común que enfrentan los novatos. También vimos diferentes ejemplos analizando los casos en los que se planteó este error.
Artículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase