Java Compiler Error: ulovlig start af udtryk

1. Oversigt

Den "ulovlige begyndelse af udtryk" er en almindelig fejl, vi kan opleve på kompileringstidspunktet.

I denne vejledning ser vi eksempler, der illustrerer hovedårsagerne til denne fejl, og hvordan man løser den.

2. Manglende krøllede seler

Manglende krøllede seler kan føre til fejlen "ulovlig start på udtryk". Lad os først se på et eksempel:

pakke com.baeldung; offentlig klasse MissingCurlyBraces {public void printSum (int x, int y) {System.out.println ("Beregningsresultat:" + calcSum (x, y)); public int calcSum (int x, int y) {return x + y; }}

Hvis vi sammensætter ovenstående klasse:

$ javac MissingCurlyBraces.java MissingCurlyBraces.java:7: fejl: ulovlig start af udtryk public int calcSum (int x, int y) {^ MissingCurlyBraces.java:7: error: ';' forventet offentlig int calcSum (int x, int y) {..... 

Mangler den afsluttende krøllede bøjle af printSum () er årsagen til problemet.

Løsningen på problemet er enkel - tilføj den lukkede krøllede bøjle til printSum () metode:

pakke com.baeldung; offentlig klasse MissingCurlyBraces {public void printSum (int x, int y) {System.out.println ("Beregningsresultat:" + calcSum (x, y)); } public int calcSum (int x, int y) {return x + y; }}

Før vi går videre til næste afsnit, lad os gennemgå kompilatorfejlen.

Compileren rapporterer, at den 7. linje forårsager fejlen "ulovlig start på udtryk". Faktisk ved vi, at årsagen til problemet er i 6. linje. Fra dette eksempel lærer vi det undertiden peger kompilatorfejlene ikke på linjen med grundårsagen, og vi bliver nødt til at rette syntaksen i den forrige linje.

3. Adgang Modifier inde metode

I Java, vi kan kun erklære lokale variabler inde i en metode eller konstruktør. Vi kan ikke bruge nogen adgangsmodifikator til lokale variabler inde i en metode, fordi deres tilgængelighed er defineret af metodens omfang.

Hvis vi bryder reglen og har adgangsmodifikatorer inden for en metode, hæves fejlen "ulovlig start på udtryk".

Lad os se dette i aktion:

pakke com.baeldung; public class AccessModifierInMethod {public void printSum (int x, int y) {private int sum = x + y; System.out.println ("Beregningsresultat:" + sum); }}

Hvis vi prøver at kompilere ovenstående kode, ser vi kompileringsfejlen:

$ javac AccessModifierInMethod.java AccessModifierInMethod.java:5: fejl: ulovlig start af udtryk privat int sum = x + y; ^ 1 fejl

Fjernelse af privat adgangsmodifikator løser nemt problemet:

pakke com.baeldung; public class AccessModifierInMethod {public void printSum (int x, int y) {int sum = x + y; System.out.println ("Beregningsresultat:" + sum); }}

4. Indlejrede metoder

Nogle programmeringssprog, såsom Python, understøtter indlejrede metoder. Men, Java understøtter ikke en metode inde i en anden metode.

Vi står over for kompilatorfejlen "ulovlig start på udtryk", hvis vi opretter indlejrede metoder:

pakke com.baeldung; offentlig klasse NestedMethod {public void printSum (int x, int y) {System.out.println ("Beregningsresultat:" + calcSum (x, y)); public int calcSum (int x, int y) {return x + y; }}} 

Lad os kompilere ovenstående kildefil og se, hvad Java-kompilatoren rapporterer:

$ javac NestedMethod.java NestedMethod.java:6: fejl: ulovlig start af udtryk public int calcSum (int x, int y) {^ NestedMethod.java:6: error: ';' forventet offentlig int calcSum (int x, int y) {^ NestedMethod.java:6: fejl: forventet offentlig int calcSum (int x, int y) {^ NestedMethod.java:6: fejl: ikke en erklæring public int calcSum (int x, int y) {^ NestedMethod.java:6: fejl: ';' forventede offentlige int calcSum (int x, int y) {^ 5 fejl

Java-kompilatoren rapporterer fem kompileringsfejl. I nogle tilfælde kan en enkelt fejl forårsage flere yderligere fejl under kompileringstiden.

At identificere årsagen er afgørende for, at vi kan løse problemet. I dette eksempel er den første “ulovlige start af udtryk” -fejl grundårsagen.

Vi kan hurtigt løse problemet ved at flytte calcSum () metode ud af printSum () metode:

pakke com.baeldung; offentlig klasse NestedMethod {public void printSum (int x, int y) {System.out.println ("Beregningsresultat:" + calcSum (x, y)); } public int calcSum (int x, int y) {return x + y; }} 

5. char eller Snor Uden tilbud

Vi ved det Snor bogstaver skal pakkes med dobbelt anførselstegn, mens char værdier bør citeres ved hjælp af enkelt anførselstegn.

Hvis vi glemmer at vedlægge disse i de rette tilbud, Java-kompilatoren behandler dem som variabelnavne.

Vi kan se fejlen "kan ikke finde symbol", hvis "variablen" ikke erklæres.

Imidlertid, hvis vi glemmer at dobbelt citere a Snor der ikke er et gyldigt Java-variabelnavn, rapporterer Java-kompilatoren fejlen "ulovlig start på udtryk".

Lad os se på det gennem et eksempel:

pakke com.baeldung; offentlig klasse ForgetQuoting {public int calcSumOnly (int x, int y, String operation) {if (operation.equals (+)) {return x + y; } smid ny UnsupportedOperationException ("operation understøttes ikke:" + operation); }} 

Vi glemte at citere Snor+ inde i opkaldet til lige med metode og + er naturligvis ikke et gyldigt Java-variabelnavn.

Lad os nu sammensætte det:

$ javac ForgetQuoting.java ForgetQuoting.java:5: fejl: ulovlig start af udtryk, hvis (operation.equals (+)) {^ 1 fejl 

Løsningen på problemet er enkel - indpakning Snor bogstaver i dobbelt anførselstegn:

pakke com.baeldung; offentlig klasse ForgetQuoting {public int calcSumOnly (int x, int y, String operation) {if (operation.equals ("+")) {return x + y; } smid ny UnsupportedOperationException ("operation understøttes ikke:" + operation); }} 

6. Konklusion

I denne korte artikel talte vi om fem forskellige scenarier, der hæver fejlen "ulovlig start på udtryk".

Det meste af tiden, når vi udvikler Java-applikationer, bruger vi en IDE, der advarer os, når der opdages fejl. Disse gode IDE-funktioner kan gå langt for at beskytte os mod denne fejl.

Vi kan dog stadig støde på fejlen fra tid til anden. Derfor vil en god forståelse af fejlen hjælpe os med hurtigt at finde og rette fejlen.