CodeGym /Kursy Java /All lectures for PL purposes /Popularne błędy kompilacji

Popularne błędy kompilacji

All lectures for PL purposes
Poziom 1 , Lekcja 1106
Dostępny

1. Zapominanie o średniku

Najczęstszy błąd popełniany przez początkujących programistów Java dotyczy średnika. A raczej jego brak tam, gdzie powinien.

Każda instrukcja wewnątrz metody musi kończyć się średnikiem. Średnik oddziela instrukcje lub polecenia: w ten sposób informujemy kompilator Java, gdzie kończy się jedno polecenie, a zaczyna następne.

Przykłady błędów:

błędny kod Poprawny kod
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?");


2. Zapominanie o zamknięciu cudzysłowów

Drugim najczęstszym błędem popełnianym przez nowicjuszy w Javie jest wpisanie ciągu znaków w kodzie, a następnie zapomnienie o zamknięciu cudzysłowu.

Każdy literał łańcuchowy w kodzie musi być ujęty z obu stron w podwójny cudzysłów ("). Początkujący programiści bardzo często stawiają cudzysłów na początku tekstu, ale zapominają go zamknąć na końcu.

Oto kilka przykładów:

błędny kod Poprawny kod
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.";


3. Zapominanie o dodaniu plusa przy sklejaniu sznurków

Innym częstym błędem podczas pracy ze strunami jest zapominanie o wpisaniu znaku plus podczas sklejania strun. Ten błąd jest szczególnie powszechny, gdy tekst i zmienne są łączone w długie wyrażenie w kodzie.

Oto kilka przykładów:

błędny kod Poprawny kod
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);


4. Zapominanie o zamknięciu nawiasów klamrowych

To bardzo częsty błąd. Istnieją dwie sytuacje, w których jest to typowe:

Pierwsza sytuacja: postanowiłeś skądś skopiować kod i przypadkowo przegapiłeś kilka nawiasów klamrowych. Druga sytuacja: po prostu nie zadajesz sobie trudu, aby upewnić się, że każdemu nawiasowi otwierającemu odpowiada nawias zamykający.

Aby uniknąć tych błędów, zwykle zaleca się początkującym programistom wpisanie zamykającego nawiasu klamrowego pod otwierającym.

Przykłady:

błędny kod Poprawny kod
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!");
      }
   }
}


5. Zapominanie o dodaniu nawiasów

Najczęściej ten błąd popełniają programiści, którzy znają języki programowania, które nie wymagają stosowania nawiasów w podobnych sytuacjach.

Jedną z możliwości jest to, że po prostu zapominają umieścić nawiasy na końcu wywołania metody:

Inną możliwością jest to, że zapomnieli umieścić warunek instrukcji if-elsew nawiasach.

Przykłady:

błędny kod Poprawny kod
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!");
   }
}


6. mainBłędne napisanie deklaracji metody

Jak tylko zadeklarują krwawą mainmetodę! Prawdopodobnie nic nie potyka nowicjuszy tak bardzo, jak ta kiepska metoda. Co ważne, zawsze są zdziwieni i zastanawiają się, dlaczego ich program się nie uruchamia?

I oczywiście nie jest winny programista, ale program, kompilator, walidator kodu, maszyna Java itp. Lista kozłów ofiarnych jest nieskończona.

Przykłady:

błędny kod Wyjaśnienie
static void main(String[] args)
publicbrakuje
public void main(String[] args)
staticbrakuje
public main(String[] args)
voidbrakuje
void main(String[] args)
publici staticbrakuje
public static void main(String args)
[]brakuje
public static void main()
String[] argsbrakuje
public static int main(String[] args)
Mamy intzamiastvoid


7. Nazwa pliku różni się od nazwy klasy

Zgodnie ze standardem Java wszystkie klasy Java muszą być przechowywane w pliku o tej samej nazwie, co nazwa klasy. I jak wspomniano wcześniej, przypadek liter ma tutaj znaczenie:

Nazwa pliku Nazwa klasy Notatka
Solution.java
Solution
Wszystko w porządku
Solutions.java
Solution
Nazwa pliku zawiera zbędną literęs
solution.java
Solution
Nazwa pliku zaczyna się od małej litery
Solution.txt
Solution
Rozszerzenie pliku to .txtzamiast.java
Solution.java
solution
Nazwa klasy zaczyna się od małej litery

Właściwie w pliku z rozszerzeniem .java można zadeklarować kilka klas, ale tylko jedna z nich może mieć to słowo publicprzed nazwą klasy. I to jest nazwa, która musi pasować do nazwy pliku.

Plik .java musi zawsze zawierać klasę, której nazwa jest taka sama jak nazwa pliku, a klasa ta musi mieć modyfikator public. Przykład:

Rozwiązanie.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

Ponadto język Java umożliwia pisanie klas w klasach. To kolejny sposób na obejście powyższego ograniczenia. Jeśli klasa publiczna (klasa z modyfikatorem public) jest zadeklarowana w pliku i ma taką samą nazwę jak nazwa pliku, to wewnątrz tej klasy publicznej można zadeklarować dowolną liczbę klas. To powiedziawszy, nie będą to już zwykłe zajęcia. Zamiast tego będą to klasy wewnętrzne lub zagnieżdżone. Przykład:

Rozwiązanie.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}


8. Zapominanie pisaniapackage

Ponieważ programy zwykle mają tysiące klas, znalezienie dla nich wszystkich prostych, zrozumiałych i unikalnych nazw może być trudne. Dlatego w Javie zwyczajowo grupuje się klasy w pakiety za pomocą packagesłowa kluczowego. Dokładnie tak, jak pliki są pogrupowane w foldery.

Dlatego każda klasa powinna zaczynać się od wskazania pakietu, do którego należy. Przykład

Kod bez opakowania Poprawiony przykład
public class Solution
{
}
package com.codegym.tasks.task0001;

public class Solution
{
}


9. Zapominanie o dodaniuimport

Jeśli chcemy wykorzystać w naszym programie czyjąś klasę, mamy dwie możliwości: wszędzie w naszym kodzie musimy również wpisać jej nazwę pakietu przed nazwą klasy. Alternatywnie możemy importjednorazowo napisać w pełni kwalifikowaną nazwę klasy ze słowem kluczowym.

Przykład:

Bez użycia importu Korzystanie z importu
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

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

Obie opcje działają, ale jeśli po prostu napiszesz Scannerswój kod bez dodawania import, kompilator nie będzie w stanie zrozumieć, Scannerz którego pakietu musi pobrać klasę, a twój program się nie skompiluje.


Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION