„Hé, fiatal toborzó, aki nap mint nap egy rakás hibát követ el, még a legegyszerűbb programokban is!

"Öhm... Szia, Diego. Fiú, te tényleg tudod, hogyan kell felvidítani az embereket!"

"Természetesen igen! Tanuld meg kimondani, amit mondani kell. Mint mondtam, "minden nap". Udvariasabban fogalmazva az üdvözletem azt jelenti, hogy "a jövő sikeres programozója, ha természetesen nem rontja el" ."

"Ó, hát akkor köszönöm, legmetálosabb tanárom !

"Ezt a leckét követően meg fogod köszönni. Itt felsorolom a fordító által feljegyzett legnépszerűbb hibákat. A te feladatod pedig az, hogy emlékezz. Az előre figyelmeztetés fegyveres.

Pontosvessző elfelejtése

"A Java programozók leggyakoribb hibája a pontosvessző. Vagy inkább annak hiánya ott, ahol lennie kellene."

– Az igazság az, hogy... többször is elkövettem ezt a vétket.

"A metódusokon belül minden utasításnak pontosvesszővel kell végződnie. A pontosvessző az, ami elválasztja az utasításokat vagy parancsokat: így mondjuk meg a Java fordítónak, hogy hol végződik az egyik parancs, és hol kezdődik a következő.

Példák a hibákra:

Hibás kód Helyes kód
int a
int b = 5
int c = a + b
int a;
int b = 5;
int c = a + b;
System.out.println("Hello")
System.out.println("Hello");
if (2 > 3)
   System.out.println("Are we in Australia?")
if (2 > 3)
   System.out.println("Are we in Australia?");

Elfelejtette bezárni az idézeteket

"A Java újoncainak második leggyakoribb hibája az, hogy beírnak egy karakterláncot a kódba, majd elfelejtik bezárni az idézetet.

A kódban minden karakterláncot mindkét oldalon dupla idézőjelbe (") kell zárni. A kezdő programozók nagyon gyakran tesznek idézőjeleket a szöveg elejére, de elfelejtik bezárni a végén.

Hibás kód Helyes kód
String s = "Hello;
String s = "Hello";
System.out.println("Hello);
System.out.println("Hello");
String s = "Hello";
String message = s + " and by. ;
String s = "Hello";
String message = s + " and bye.";

A húrok összeragasztásánál elfelejtett pluszjelet adni

"A karakterláncokkal való munka során egy másik gyakori hiba az, hogy elfelejtenek pluszjelet írni, amikor a karakterláncokat összeragasztják. Ez a hiba különösen akkor fordul elő, ha a szöveg és a változók egy hosszú kifejezésben vannak összefűzve a kódban.

Íme néhány példa:

Hibás kód Helyes kód
String s = "Hello";
String message = s  " and bye.";
String s = "Hello";
String message = s + " and bye.";
int age = 35;
System.out.println("Age=" age);
int age = 35;
System.out.println("Age=" + age);
int age = 35;
System.out.println("Age=", age);
int age = 35;
System.out.println("Age=" + age);

Elfelejtette bezárni a göndör fogszabályzót

"Ez egy nagyon gyakori hiba. Két olyan helyzet van, amikor ez jellemző:

  1. Úgy döntöttél, hogy kódot másolsz valahonnan, és véletlenül kihagytál néhány göndör zárójelet.
  2. Egyszerűen nem zavarja magát, hogy megbizonyosodjon arról, hogy minden nyitott zárójelhez egy záró zárójel párosul."

"A második lehetőség az, amit csinálok. Néha annyira elragadok, hogy elfelejtem!" .

"A hibák elkerülése érdekében a kezdő programozóknak általában azt javasolják, hogy a záró göndör kapcsos zárójelet írják a nyitó alá.

Példák:

Hibás kód Helyes kód
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
}

Elfelejtett zárójelet adni

„Ezt a hibát leggyakrabban olyan fejlesztők követik el, akik olyan programozási nyelveket ismernek, amelyekhez hasonló helyzetekben nincs szükség zárójelekre.

Az egyik lehetőség az, hogy egyszerűen elfelejtenek zárójelet tenni a metódushívás végére:

if-elseEgy másik lehetőség, hogy elfelejtik zárójelbe tenni egy állítás feltételét .

Példák:

Hibás kód Helyes kód
System.out.println("Hello!");
System.out.println;
System.out.println("And bye!");
System.out.println("Hello!");
System.out.println();
System.out.println("And bye!");
if 2 < 3
{
   if 3 < 4
   {
      System.out.println("Mathematics!");
   }
}
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}

mainA metódus deklaráció írása helytelen

"Amint kihirdetik a véres mainmódszert! Valószínűleg semmi sem botránkoztatja meg annyira az újoncokat, mint ez a rossz módszer. Fontos, hogy ilyenkor mindig meglepődnek, és csodálkoznak, miért nem indul el a programjuk? És persze a programozó sem az. Nem hibáztatható, hanem a program, a fordító, a kódellenőrző, a Java gép stb. A bűnbakok listája végtelen.

Példák:

Hibás kód Magyarázat
static void main(String[] args)
publichiányzik
public void main(String[] args)
statichiányzik
public main(String[] args)
voidhiányzik
void main(String[] args)
publicés statichiányoznak
public static void main(String args)
[]hiányzik
public static void main()
String[] argshiányzik
public static int main(String args)
Nekünk intvan helyettevoid

A fájl neve eltér az osztály nevétől

"A Java szabvány szerint minden Java osztályt az osztálynévvel megegyező nevű fájlban kell tárolni. És ahogy korábban említettük, itt a betűk kis- és nagybetűje számít:

Fájl név Osztály név jegyzet
Solution.java Megoldás Minden rendben
A megoldás .java Megoldás A fájl neve felesleges "s" betűként
s megoldás.java Megoldás A fájl neve kisbetűvel kezdődik
Megoldás. txt Megoldás A fájl kiterjesztése .txt a .java helyett
Solution.java megoldás Az osztály neve kisbetűvel kezdődik

"Valójában több osztály is deklarálható egy .java kiterjesztésű fájlban, de ezek közül csak az egyiknek lehet szó publicaz osztálynév előtt. És ennek a névnek meg kell egyeznie a fájl nevével.

"A .java fájlban mindig rendelkeznie kell egy osztálynak, amelynek neve megegyezik a fájlnévvel, és ennek az osztálynak rendelkeznie kell a publicmódosítóval. Példa:

Solution.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

"Emellett a Java nyelv lehetővé teszi, hogy osztályokat írjon az osztályokon belül. Ez egy másik módja a fenti korlátozás megkerülésének. Ha egy nyilvános osztály (egy osztály a módosítóval public) deklarálva van egy fájlban, és ugyanaz a neve, mint a fájlnév, akkor tetszőleges számú osztályt deklarálhat ezen a nyilvános osztályon belül. Ezek azonban többé nem lesznek közönséges osztályok. Ehelyett belső vagy beágyazott osztályok lesznek. Példa:

Solution.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}

Elfelejtett írnipackage

"Mivel a programok általában több ezer osztályt tartalmaznak, nehéz lehet mindegyiknek egyszerű, érthető és egyedi nevet találni. Éppen ezért a Java-ban szokás az osztályokat a kulcsszó használatával csomagokba csoportosítani. Pontosan a fájlok csoportosításának packagemódja mappákba."

"Ah-ha, ezért minden osztálynak a csomag megjelölésével kell kezdődnie, amelyhez tartozik."

"Pontosan. Íme egy példa:

Kód csomag nélkül Helyesbített példa
public class Solution
{
}
package en.codegym.tasks.task0001;

public class Solution
{
}

Elfelejtett hozzátenniimport

import"Ha valaki más osztályát szeretnénk használni a programunkban, két lehetőségünk van: a kódunkban mindenhol a csomag nevét is be kell írnunk az osztály neve elé. Alternatív megoldásként a teljes képzésű osztálynevet egyszer beírhatjuk a kulcsszóval. . Példa:

Import használata nélkül Importálás használata
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

public class Solution
{
   Scanner console = new Scanner();
}

"Mindkét opció működik, de ha egyszerűen beírod Scannera kódot anélkül, hogy hozzáadnád a -t import, akkor a fordító nem fogja tudni, hogy melyik csomagból kell átvennie az Scannerosztályt, és a programod nem fog lefordítani."

– Köszönöm, Diego. Ez a lecke arra késztet, hogy jobban odafigyeljek.

"Ez az, amire számítottam. Sok szerencsét!"