Java fordító hiba: illegális kifejezéskezdés

1. Áttekintés

Az „illegális kifejezéskezdés” gyakori hiba, amellyel a fordítás idején szembesülhetünk.

Ebben az oktatóanyagban példákat mutatunk be, amelyek bemutatják a hiba fő okait és megoldási módjait.

2. Hiányzó göndör nadrágtartó

A hiányzó göndör zárójelek az „illegális kifejezés kezdet” hibához vezethetnek. Először nézzünk meg egy példát:

csomag com.baeldung; public class MissingCurlyBraces {public void printSum (int x, int y) {System.out.println ("Számítási eredmény:" + calcSum (x, y)); public int calcSum (int x, int y) {return x + y; }}

Ha összeállítjuk a fenti osztályt:

$ javac MissingCurlyBraces.java MissingCurlyBraces.java:7: hiba: illegális kifejezéskezdés public int calcSum (int x, int y) {^ MissingCurlyBraces.java:7: error: ';' várható nyilvános int calcSum (int x, int y) {..... 

Hiányzik a göndör záró zárójel printSum () a probléma kiváltó oka.

A probléma megoldása egyszerű - hozzáadva a záró göndör zárójelet a printSum () módszer:

csomag com.baeldung; public class MissingCurlyBraces {public void printSum (int x, int y) {System.out.println ("Számítási eredmény:" + calcSum (x, y)); } public int calcSum (int x, int y) {return x + y; }}

Mielőtt továbblépnénk a következő szakaszra, nézzük át a fordító hibáját.

A fordító jelentése szerint a 7. sor okozza az „illegális kifejezéskezdés” hibát. Valójában tudjuk, hogy a probléma kiváltó oka a 6. sorban található. Ebből a példából ezt megtudhatjuk néha a fordító hibái nem mutatják a kiváltó okot, és meg kell javítanunk a szintaxist az előző sorban.

3. Hozzáférés-módosító belső módszer

Java-ban csak egy metódus vagy konstruktor belsejében deklarálhatunk lokális változókat. A metódusban nem használhatunk hozzáférési módosítót a helyi változókhoz, mert hozzáférhetőségüket a módszer hatóköre határozza meg.

Ha megszegjük a szabályt, és hozzáférési módosítók vannak a metódus belsejében, akkor felmerül az „illegális kifejezéskezelés” hiba.

Lássuk ezt működés közben:

csomag com.baeldung; public class AccessModifierInMethod {public void printSum (int x, int y) {private int összeg = x + y; System.out.println ("Számítási eredmény:" + összeg); }}

Ha megpróbáljuk lefordítani a fenti kódot, látni fogjuk a fordítási hibát:

$ javac AccessModifierInMethod.java AccessModifierInMethod.java:5: hiba: illegális kifejezéskezdés private int sum = x + y; ^ 1 hiba

A magán a hozzáférés-módosító könnyen megoldja a problémát:

csomag com.baeldung; public class AccessModifierInMethod {public void printSum (int x, int y) {int összeg = x + y; System.out.println ("Számítási eredmény:" + összeg); }}

4. Beágyazott módszerek

Néhány programozási nyelv, például a Python, támogatja a beágyazott módszereket. De, A Java nem támogat egy metódust egy másik módszeren belül.

Az „illegális kifejezéskezdés” fordító hibával szembesülünk, ha beágyazott módszereket hozunk létre:

csomag com.baeldung; public class NestedMethod {public void printSum (int x, int y) {System.out.println ("Számítási eredmény:" + calcSum (x, y)); public int calcSum (int x, int y) {return x + y; }}} 

Fordítsuk le a fenti forrásfájlt, és nézzük meg, mit jelent a Java fordító:

$ javac NestedMethod.java NestedMethod.java:6: hiba: illegális kifejezéskezdés public int calcSum (int x, int y) {^ NestedMethod.java:6: hiba: ';' várható nyilvános int calcSum (int x, int y) {^ NestedMethod.java:6: hiba: várható public int calcSum (int x, int y) {^ NestedMethod.java:6: hiba: nem állítás public int calcSum (int x, int y) {^ NestedMethod.java:6: hiba: ';' várható nyilvános int calcSum (int x, int y) {^ 5 hibák

A Java fordító öt fordítási hibáról számol be. Bizonyos esetekben egyetlen hiba több további hibát okozhat a fordítási idő alatt.

A kiváltó ok azonosítása elengedhetetlen ahhoz, hogy képesek legyünk megoldani a problémát. Ebben a példában az első „illegális kifejezéskezelési” hiba a kiváltó ok.

Gyorsan megoldhatjuk a problémát a calcSum () módszer a printSum () módszer:

csomag com.baeldung; public class NestedMethod {public void printSum (int x, int y) {System.out.println ("Számítási eredmény:" + calcSum (x, y)); } public int calcSum (int x, int y) {return x + y; }} 

5. char vagy Húr Idézőjelek nélkül

Tudjuk Húr literálokat kettős idézőjelbe kell csomagolni, míg char az értékeket egyetlen idézőjel segítségével kell megadni.

Ha elfelejtjük ezeket beilleszteni a megfelelő idézetekbe, a Java fordító változó névként fogja kezelni őket.

„Nem találunk szimbólumot” hibát láthatunk, ha a „változó” nincs deklarálva.

Azonban, ha elfelejtjük duplán idézni a Húr ez nem érvényes Java változónév, a Java fordító az „illegális kifejezéskezelés” hibát jelenti.

Nézzük meg egy példán keresztül:

csomag com.baeldung; public class ForgetQuoting {public int calcSumOnly (int x, int y, String operation) {if (művelet.egyenlő (+)) {return x + y; } dobja az új UnsupportedOperationException parancsot ("a művelet nem támogatott:" + művelet); }} 

Elfelejtettük idézni a Húr+ belül a hívást a egyenlő módszer, és + nyilvánvalóan nem érvényes Java változónév.

Most próbáljuk meg összeállítani:

$ javac ForgetQuoting.java ForgetQuoting.java:5: hiba: illegális kifejezéskezdés if (operation.equals (+)) {^ 1 hiba 

A probléma megoldása egyszerű - csomagolás Húr literál kettős idézőjelben:

csomag com.baeldung; public class ForgetQuoting {public int calcSumOnly (int x, int y, String operation) {if (művelet.egyenlő ("+")) {return x + y; } dobja az új UnsupportedOperationException parancsot ("a művelet nem támogatott:" + művelet); }} 

6. Következtetés

Ebben a rövid cikkben öt különböző forgatókönyvről beszéltünk, amelyek felvetik az „illegális kifejezéskezelés” hibát.

A Java-alkalmazások fejlesztésekor legtöbbször egy IDE-t fogunk használni, amely figyelmeztet bennünket, ha hibákat észlelünk. Ezek a szép IDE funkciók nagyban hozzájárulhatnak ahhoz, hogy megvédjenek minket ettől a hibától.

Időnként azonban még mindig találkozhatunk a hibával. Ezért a hiba megfelelő megértése segít abban, hogy gyorsan megtaláljuk és kijavítsuk a hibát.