[Fixed] Cum se rezolvă eroarea „Nu se poate găsi simbolul” în Java

Java este un limbaj de programare de uz general, orientat pe obiecte, puternic tipat, pentru construirea de aplicații web, mobile și de întreprindere. Java, dezvoltat de Sun Microsystems și deținut în prezent de Oracle Corporation, a devenit un limbaj de programare foarte popular datorită portabilității, scalabilității, fiabilității și stabilității sale.

Când scrieți programe folosind Java, limbajul de programare Java este că Java, codul sursă este mai întâi compilat în bytecode. Codul de octeți este apoi interpretat de mașina virtuală Java în cod de mașină, permițând astfel programului Java să ruleze. Prin urmare, Java este atât un limbaj compilat, cât și interpretat.

Compilarea implică scanarea unui întreg cod sursă și traducerea acestuia în codul mașinii deodată. Un interpret, pe de altă parte, convertește codul sursă în cod mașină pe rând.

În timpul compilării, compilatorul creează o listă cu toți identificatorii utilizați în program. În Java, identificatorii sunt nume date diferitelor elemente din program, cum ar fi variabile, clase, metode, pachete și interfețe, printre altele.

Când un program Java este compilat, pot apărea erori în timpul procesului de compilare. Astfel de erori sunt cunoscute ca erori de compilare sau erori de compilare. Erorile de compilare împiedică compilatorul Java să genereze cu succes codul octet al unui program.

Erorile de compilare împiedică compilarea programului dumneavoastră. Astfel de erori pot fi cauzate de erori de sintaxă, semantică sau structurală din codul sursă. Un exemplu de eroare de compilare este eroarea simbolului Nu se poate găsi.

eroare: nu poate găsi simbolul

După cum sa menționat mai devreme, în timpul compilării, compilatorul Java creează o listă a tuturor identificatorilor utilizați în program și își dă seama ce înseamnă fiecare identificator. Dacă compilatorul găsește un identificator pe care nu îl recunoaște sau nu poate spune la ce se referă identificatorul, apare o eroare de simbol de imposibilitate de găsit.

O eroare de simbol de imposibil de găsit este modul compilatorului de a vă spune că utilizați un identificator pe care nu îl poate înțelege și, prin urmare, nu poate înțelege ce ar trebui să facă identificatorul.

Acest lucru se poate datora faptului că identificatorul pe care încercați să îl utilizați nu a fost declarat, nu este disponibil în domeniul de aplicare pe care îl utilizați sau nu a fost importat corect. O eroare de simbol de nu se poate găsi poate duce la compilare eșuată.

Cauzele erorii: simbolul nu a fost găsit

Unele dintre cauzele potențiale ale erorii: simbolul nu poate fi găsit includ:

  • Greșelile tipografice duc la variabile, metode, clase sau nume de pachete greșite. Folosirea unei majuscule greșite duce, de asemenea, la această eroare, deoarece Java face distincție între majuscule și minuscule.
  • Folosind o variabilă, metodă sau clasă care nu a fost declarată sau folosind-o înainte de declararea ei efectivă.
  • Folosind variabile, metode sau clase în afara domeniului în care au fost declarate.
  • Crearea unei instanțe a unei clase fără a utiliza cuvântul cheie nou
  • Lipsesc instrucțiuni de import când încercați să utilizați clase din alte pachete. Eșecul de a importa o clasă care se află într-un alt pachet înainte de a o utiliza va cauza și această eroare.
  • Import incorect de pachet.
  Verificați disponibilitatea numelui de utilizator pe orice rețea socială

Atunci când compilatorul detectează oricare dintre greșelile de mai sus în codul dvs., va opri compilarea și va arunca eroarea simbolului nu poate găsi.

Exemple de eroare: simbolul nu poate fi găsit

Să aruncăm o privire detaliată la exemplele de cod care arată diferitele cauze ale erorii simbolului de imposibilitate de găsit și cum să rezolvăm eroarea.

#1. Greșeli tipografice

Variabilele scrise greșit, metodele, clasele sau numele pachetelor și cazurile greșite duc la eroarea simbolului de imposibilitate de găsit. Luați în considerare codul de mai jos:

class Test {
  public static void main(String[] args) {
    int even_number = 4;
    System.out.println(even_numbe); // misspelled variable name
    System.out.println(Even_number);// wrong case
    int sum = addnumber(5, 20); // misspelled method name, wrong case
    System.out.println(sum);
  }
  
  public static int addNumbers(int a, int b) {
    int result = a + b;
    return result;
  }
}

Rezultatul compilarii codului de mai sus este prezentat mai jos:

Pentru a corecta erorile, asigurați-vă că utilizați metoda corectă și numele variabilelor. În exemplu, variabila număr_par și numele metodei addNumbers au fost scrise greșit și au folosit cazuri greșite. Pentru a corecta aceste erori, utilizați variabila corectă și numele metodei care este număr_par și addNumbers, după cum se arată mai jos:

class Test {
  public static void main(String[] args) {
    int even_number = 4;
    System.out.println(even_number); // Correct variable name with the right case
    System.out.println(even_number); // Correct variable name with the right case
    int sum = addNumbers(5, 20); // Correct method name
    System.out.println(sum);
  }

  public static int addNumbers(int a, int b) {
    int result = a + b;
    return result;
  }
}

Ieșire:

4
4
25

#2. Variabilă nedeclarată

Variabilele nedeclarate, folosind variabile înainte de declarație și folosirea variabilelor, metodelor și claselor în afara domeniului lor, duc la imposibilitatea de a găsi simbolul așa cum se arată mai jos:

class Test {
  public static void main(String[] args) {
    System.out.println(y); // y is undeclared
    System.out.println(num); // num used before its declaration
    int num = 4; // num's declaration and initialization
    if (num > 3) {
      int x = 2;
    };
    System.out.println(x); // x - used outside its scope
  }
}

Rezultatul compilarii acestui cod este prezentat mai jos:

Pentru a corecta această eroare, asigurați-vă că declarați fiecare variabilă pe care o utilizați în programul dvs. și le utilizați numai după ce le-ați declarat. În cazul nostru, variabilele y și num au fost folosite înainte de a fi declarate. Corectați această eroare utilizându-le după declararea lor.

Variabila x a fost folosită în afara domeniului în care a fost declarată. Pentru a corecta acest lucru, utilizați-o în blocul if unde a fost declarată, așa cum se arată mai jos:

class Test {
  public static void main(String[] args) {
    String y = "Hello World";
    System.out.println(y); // y - used after it has been declared
    int num = 4; 
    System.out.println(num); // num - used after it has been declared
    
    if (num > 3) {
      int x = 2;
      System.out.println(x); // x - used within the scope of the if statement
    };
  }
}

Ieșire:

Hello World
4
2

#3. Variabile, metode și clase în afara domeniului de aplicare

Utilizarea variabilelor, metodelor și claselor în afara domeniului de aplicare în care au fost declarate va duce la un simbol de imposibilitate de găsit, așa cum se arată în codul de mai jos:

class Test {
  public static void main(String[] args) {
    if (true) {
      int number = 10;
    }
    System.out.println(number); // 'number' is out of scope
  }
}

Compilarea acestui cod duce la următoarea eroare:

  Cele mai bune 11 alternative la Illustrator (gratuit+plătit)

Pentru a corecta eroarea, asigurați-vă că utilizați numărul variabilei în domeniul de aplicare pentru care a fost declarat. Aceasta este în domeniul de aplicare al blocului if, așa cum se arată mai jos:

class Test {
  public static void main(String[] args) {
    if (true) {
      int number = 10;
      System.out.println(number); // number - used within the scope of the if block
    }
  }
}

Ieșire:

10

#4. Crearea unei instanțe a unei clase fără a utiliza cuvântul cheie nou

Java este un limbaj orientat pe obiecte și astfel puteți crea obiecte cunoscute și ca instanțe de clasă într-un program Java. Cu toate acestea, dacă faceți acest lucru fără a utiliza noul cuvânt cheie, veți întâlni un simbol de imposibilitate de găsit, așa cum se arată mai jos:

public class Car {
  private String make;
  private String model;

  public Car(String make, String model) {
    this.make = make;
    this.model = model;
  }

  public String getMake() {
    return make;
  }

  public String getModel() {
    return model;
  }

  public static void main(String[] args) {
    // Creating an instance of the Car class without using new
    Car myCar = Car("Ford", "Fiesta");

    System.out.println("Make: " + myCar.getMake());
    System.out.println("Model: " + myCar.getModel());
  }
}

Compilarea codului are ca rezultat o eroare, după cum se arată mai jos:

Pentru a corecta eroarea, utilizați noul cuvânt cheie ori de câte ori creați obiecte. Pentru a crea o instanță a unei clase în Java, trebuie să utilizați cuvântul cheie nou. Pentru a crea o instanță a clasei Car, trebuie să utilizați new Car() așa cum se arată mai jos:

public class Car {
  private String make;
  private String model;

  public Car(String make, String model) {
    this.make = make;
    this.model = model;
  }

  public String getMake() {
    return make;
  }

  public String getModel() {
    return model;
  }

  public static void main(String[] args) {
    // Instance of Car created correctly by using the new keyword
    Car myCar = new Car("Ford", "Fiesta");

    System.out.println("Make: " + myCar.getMake());
    System.out.println("Model: " + myCar.getModel());
  }
}

Ieșire:

Make: Ford
Model: Fiesta

#5. Lipsește importul

Încercarea de a utiliza o clasă găsită într-un alt pachet fără a o importa duce la eroarea simbolului nu poate găsi. Vezi codul de mai jos:

class Test {
  public static void main(String[] args) {
    System.out.println("Hello, enter any number");
    // Missing import for the Scanner class
    Scanner scanner = new Scanner(System.in);
    int number = scanner.nextInt();
    System.out.println("The number you entered is: " + number);
    scanner.close();
  }
}

Rezultatul compilarii codului este prezentat mai jos:

  Decodificarea comenzii SQL UPDATE

Clasa Scanner este folosită pentru a obține intrarea utilizatorului de la tastatură într-un program Java. Pentru a-l utiliza, mai întâi trebuie să îl importați în fișierul pe care doriți să-l utilizați. Importarea clasei de scaner o face disponibilă pentru utilizare așa cum se arată. Declarația de import este prima linie din codul de mai jos:

import java.util.Scanner;
class Test {
  public static void main(String[] args) {
    System.out.println("Hello, enter any number");
    // Missing import for the Scanner class
    Scanner scanner = new Scanner(System.in);
    int number = scanner.nextInt();
    System.out.println("The number you entered is: " + number);
    scanner.close();
  }
}

Ieșire:

Hello, enter any number
45
The number you entered is: 45

#6. Import incorect

Pe lângă eșecul de a importa un pachet pe care doriți să-l utilizați, importarea pachetului greșit poate duce, de asemenea, la un simbol de imposibilitate de găsit. Luați în considerare codul de mai jos:

import java.util.Dates; // importing the wrong package - correct package is Date
class Test {
  public static void main(String[] args) {
    Dates now = new Dates();
        System.out.println(now);
  }
}

Compilarea codului are ca rezultat următoarele erori:

Pentru a corecta erorile generate de simbolul de negăsire, asigurați-vă că importați pachetul potrivit. În codul care a generat o eroare, clasa care a fost importată a fost Dates. Cu toate acestea, nu există o clasă încorporată numită Date. Numele corect este Data. Prin urmare, pentru a elimina eroarea, importați Data și nu Datele, așa cum se arată mai jos:

import java.util.Date; // importing the correct package - Date and not Dates
class Test {
  public static void main(String[] args) {
    Date now = new Date();
        System.out.println(now);
  }
}

Ieșire:

Thu Aug 17 12:02:12 EAT 2023

Impactul erorii: nu se poate găsi simbolul în compilare

Fiind o eroare de compilare, impactul cel mai imediat al erorii simbolului nu se poate găsi este un eșec în procesul de compilare. Când Java este compilat în bytecode, erorile detectate în codul sursă duc la eșecul procesului de compilare. Prin urmare, nu va fi generat niciun bytecode pentru a fi utilizat la executarea programului.

Când apar astfel de erori, cauza evidentă a acțiunii este să începeți depanarea codului sursă pentru a găsi ce cauzează erorile și a corecta erorile. În timp ce depanarea poate avea avantajul de a vă ajuta să vă familiarizați mai bine cu o limbă, poate duce la întârzieri de dezvoltare. În plus, calitatea generală a codului sursă este afectată din cauza erorilor din codul sursă.

Concluzie

Ei nu pot găsi erori de simbol, o eroare foarte comună, și sunteți obligat să le întâlniți în timp ce scrieți cod Java. Din fericire, este și o eroare foarte ușor de evitat. Nu se pot găsi rezultate de eroare de simbol din utilizarea greșită a identificatorilor. Prin urmare, pentru a evita eroarea, asigurați-vă că vă declarați toate variabilele, metodele și clasele înainte de a le utiliza.

În plus, asigurați-vă că nu faceți greșeli de scriere atunci când faceți referire la identificatorii pe care îi folosiți în programul dvs. și utilizați toți identificatorii în domeniul pe care i-ați declarat. În cele din urmă, în cazul în care veți folosi orice pachet sau clase externe în programul dvs., asigurați-vă că importați pachetele potrivite în program înainte de a începe să le utilizați.

De asemenea, puteți explora cel mai bun software de monitorizare Java pentru companii.