Video: Felsökning - Syntaxfel och Logiska Fel (BlueJ) 2024
Logiska fel i Java-programmering kan vara extremt svåra att hitta eftersom de inte speglar något slags kodproblem eller ett fel vid användandet av Java-språkelement. Koden går perfekt som skrivet - det utförs bara inte den uppgift som du förväntade dig att utföra.
Som ett resultat kan logiska fel vara de svåraste fel att hitta. Du måste spendera tid på att gå igenom din kod och letar efter en exakt orsak till felet. Här är en lista över vanliga logiska fel som Java-utvecklare stöter på:
-
Användning av felaktigt operatörsförrang: Den ordning i vilken Java tolkar operatörer är viktig. Applikationer ger ofta fel resultat eftersom utvecklaren inte innehöll parentes på rätt plats.
Exempelvis producerar följande exempel utgångar av 11, 13, 9 och 8 från de fyra variablerna, allt beroende på parentesernas (eller bristets) läge.
Public Class OperatorError {Public static void main (String [] args) {// Skapa några variabler. int MyVar1 = 5 + 4 * 3/2; int MyVar2 = (5 + 4) * 3/2; int MyVar3 = (5 + 4) * (3/2); int MyVar4 = (5 + (4 * 3)) / 2; // Utför resultatet. Systemet. ut. printnn ("MyVar1:" + MyVar1 + "nMyVar2:" + MyVar2 + "nMyVar3:" + MyVar3 + "nMyVar4:" + MyVar4);}}
-
Definiera felräkning: Eventuellt det vanligaste logiska felet räknar saker felaktigt. Människor är vana vid att börja räknas med 1, och datorer börjar ofta räknas med 0. Så det är inte ovanligt att finna att applikationerna exakt är ena i att utföra en uppgift, vare sig den här uppgiften kör en loop eller arbetar med en samling objekt.
-
Antag att ett villkor är sant när det inte är: Utvecklare kommer ofta att titta på det uttalande som används för att definiera ett villkor och anta att uttalandet är sant (eller falskt) utan att verifiera logiken av uttalandet.
Användningen av ett eller uttalande när du verkligen menade att använda en och ett uttalande kan också orsaka problem. Den logik som används för att fatta beslut medför många utvecklare, även erfarna utvecklare, många problem. Kontrollera alltid dina antaganden för villkorliga uttalanden.
-
Beroende på flytpunktsnummer för precisionsarbete: Du kan inte anta att flytpunkter kommer att leverera ett visst nummer. Det betyder att du inte kan kolla ett flytpunktsnummer för jämlikhet till något specifikt värde - du måste istället använda en rad värden för att utföra kontrollen. Flytande punkttal är alltid en approximation i Java.
-
Beroende på heltalvärden för att mäta värden: Helheter är bra för att räkna objekt eftersom de är exakta.Men många integermatematiska operationer skapar oklara resultat. Detta gäller särskilt för division, eftersom resten är alltid avstängd. (Numret är avrundat.) Använd flytpunktvärden eller BigDecimal-objekttypen när du behöver mäta något och precision är viktigt.
-
Misplacera en semikolon: Det är möjligt att skapa en Java-kod som kompilerar och kör perfekt, trots att du har en semikolon på fel plats. Här är ett exempel:
Public Class ForLoopError {Public static void main (String [] args) {// Förklara variabeln. inträknare; // Skapa slingan. för (G = 1; Räkna <= 10; räkna ++); {// Utför resultatet. Systemet. ut. println ("Count is" + Count);}}}
Observera att semikolonen visas omedelbart efter förklaringen, snarare än efter kodblocket som det ska. I stället för att skriva ut enskilda värden på Grev, skriver detta exempel en enda mening som säger att Grekland är 11.