Bezeichner Erwarteter Fehler in Java

Suraj P 12 Oktober 2023
  1. Verständnis des Fehlers <Bezeichner> erwartet in Java
  2. Beispiel 1: Wenn Parameter in einer Methode Datentyp oder Name fehlen
  3. Beispiel 2: Wenn die Ausdrucksanweisungen falsch platziert sind
  4. Beispiel 3: Wenn Deklarationsanweisungen falsch platziert sind
  5. Abschluss
Bezeichner Erwarteter Fehler in Java

In diesem Artikel erfahren wir etwas über den Java-Fehler <identifier> erwartet.

Verständnis des Fehlers <Bezeichner> erwartet in Java

<identifier> erwartet ist der häufigste Java-Kompilierungsfehler, mit dem unerfahrene Programmierer konfrontiert werden. Dieser Fehler tritt auf, wenn für einen Methodenparameter kein Datentyp oder Name deklariert ist oder wenn eine Ausdrucksanweisung außerhalb einer Methode, eines Konstruktors oder eines Initialisierungsblocks geschrieben wird.

In Java ist ein Bezeichner eine Folge von einem oder mehreren Zeichen, wobei das erste Zeichen ein Buchstabe oder $ oder _ sein muss und die nachfolgenden Zeichen Buchstaben, Ziffern, $ oder _ sein können.

Diese Bezeichner werden verwendet, um eine Variable, eine Methode, eine Klasse, ein Paket, eine Schnittstelle usw. zu benennen.

Wenn der Java-Code kompiliert wird, beinhaltet die Anfangsphase eine lexikalische Analyse des Programms. Hier wird das Programm in Token kategorisiert, und alle Token, einschließlich Identifikatoren, werden anhand einer Reihe von Grammatikregeln überprüft.

Und immer wenn gemäß den Grammatikregeln ein Bezeichner erwartet wird, aber nicht vorhanden ist und etwas anderes an seiner Stelle gefunden wird, löst der Compiler den Fehler <Bezeichner> erwartet aus. Spitze Klammern bedeuten hier einen Verweis auf die Token-Objekte.

Schauen wir uns einige Beispiele an, um es jetzt besser zu verstehen.

Beispiel 1: Wenn Parameter in einer Methode Datentyp oder Name fehlen

Parameter innerhalb einer Methode müssen Daten enthalten, gefolgt vom Variablennamen, der ein Bezeichner ist; Fehlt einer von beiden, wird unweigerlich der Fehler <Kennung> erwartet ausgelöst.

  1. Daten des Parameters fehlen

    public class Demo {
      public static int square(x) {
        return x * x;
      }
    
      public static void main(String[] args) {
        System.out.println(square(10));
      }
    }
    

    Ausgang:

    square.java:9: error: <identifier> expected
    public static int square(x) {
            	        	  ^
    1 error
    

    Wenn wir den obigen Fehler beobachten, sehen wir, dass der Variablen x der Datentyp fehlt. Wenn wir den Datentyp dafür angeben, wird es richtig funktionieren.

    public class Demo {
      public static int square(int x) {
        return x * x;
      }
    
      public static void main(String[] args) {
        System.out.println(square(10));
      }
    }
    

    Ausgang:

    100
    
  2. Der Datentyp des Parameters ist der Bezeichner; hier fehlt der Variablenname.

    public class Demo {
      public static int square(int) {
        return x * x;
      }
    
      public static void main(String[] args) {
        System.out.println(square(10));
      }
    }
    

    Ausgang:

    square.java:9: error: <identifier> expected
    public static int square(int) {
            	        	   ^
    1 error
    

    Wenn wir den obigen Fehler beobachten, können wir deutlich sehen, dass wir den Datentyp angegeben, aber keinen Variablennamen angehängt haben.

    public class Demo {
      public static int square(int x) {
        return x * x;
      }
    
      public static void main(String[] args) {
        System.out.println(square(10));
      }
    }
    

    Ausgang:

    100
    

Beispiel 2: Wenn die Ausdrucksanweisungen falsch platziert sind

Der Compiler löst einen Fehler aus, wenn eine Ausdrucksanweisung außerhalb einer Methode, eines Konstruktors oder eines Initialisierungsblocks geschrieben wird <Bezeichner> erwartet.

Beispielcode:

public class Demo {
  private String name;
  name = "Naruto";
  System.out.println(name);
}

Ausgang:

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

Wenn wir den obigen Fehler beobachten, tritt der Fehler auf, weil die Anweisungen nicht in einer Funktion oder einem Konstruktor eingeschlossen sind. Lassen Sie uns diese Anweisungen in eine Methode namens print schreiben.

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();
  }
}

Ausgang:

Naruto

Beispiel 3: Wenn Deklarationsanweisungen falsch platziert sind

Dies ist selten, aber nicht ungewöhnlich, wenn mit try-with-resources-Anweisungen gearbeitet wird. Alle diese Anweisungen erfordern, dass alle schließbaren Ressourcen unmittelbar nach dem Schlüsselwort try deklariert werden.

Wenn die Ressourcenvariable außerhalb der try-with-resources-Anweisung deklariert wird, kann der Compiler den <identifier> erwartet-Fehler auslösen (als Compiler zu Compiler kann dies variieren).

Beispielcode: Hier ist die schließbare Ressource 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();
    }
  }
}

Ausgang:

Demo.java:13: error: <identifier> expected
        try (br = new BufferedReader(new InputStreamReader(System.in))) {
              ^
1 error

Der Fehler wird behoben, wenn wir das BufferedReader obj innerhalb des try-Blocks deklarieren.

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();
    }
  }
}

Abschluss

In diesem Artikel haben wir erfahren, warum der Compiler den Fehler <identifier> erwartet ausgelöst hat und warum dies der häufigste Kompilierungsfehler ist, mit dem Neulinge konfrontiert werden. Wir haben uns auch verschiedene Beispiele angesehen, in denen die Fälle analysiert wurden, in denen dieser Fehler aufgetreten ist.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Verwandter Artikel - Java Error