„Hey, junger Rekrut, der selbst in den einfachsten Programmen jeden Tag eine Menge Fehler macht!

„Ähm... Hallo, Diego. Junge, du weißt wirklich, wie man Leute aufheitert!“

„Natürlich tue ich das! Lernen Sie zu sagen, was gesagt werden muss. Wie ich schon sagte: ‚Jeden Tag‘. Um es höflicher auszudrücken: Meine Begrüßung bedeutet „zukünftiger erfolgreicher Programmierer, wenn Sie es natürlich nicht vermasseln.“ ."

„Oooh, dann danke, mein metallischster Lehrer! .

„Nach dieser Lektion werden Sie mir danken. Hier werde ich die häufigsten vom Compiler festgestellten Fehler auflisten. Und Ihre Aufgabe ist es, sich daran zu erinnern. Vorgewarnt ist gewappnet.

Ein Semikolon vergessen

„Der häufigste Fehler, den angehende Java-Programmierer machen, betrifft das Semikolon. Oder besser gesagt, sein Fehlen dort, wo es sein sollte.“

„Die Wahrheit ist... ich habe dieses Vergehen wiederholt begangen.“

„Jede Anweisung innerhalb einer Methode muss mit einem Semikolon enden. Das Semikolon trennt Anweisungen oder Befehle: Auf diese Weise teilen wir dem Java-Compiler mit, wo ein Befehl endet und der nächste beginnt.“

Beispiele für Fehler:

Falscher Code Richtiger Code
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?");

Vergessen, Anführungszeichen zu schließen

„Der zweithäufigste Fehler von Java-Neulingen besteht darin, eine Zeichenfolge in den Code zu schreiben und dann zu vergessen, das Anführungszeichen zu schließen.“

Jedes String-Literal im Code muss auf beiden Seiten in doppelte Anführungszeichen (") eingeschlossen werden. Programmieranfänger setzen sehr oft Anführungszeichen am Anfang des Textes, vergessen aber, sie am Ende zu schließen.

Falscher Code Richtiger Code
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.";

Beim Zusammenkleben von Saiten wurde vergessen, ein Pluszeichen einzufügen

„Ein weiterer häufiger Fehler bei der Arbeit mit Zeichenfolgen ist das Vergessen, beim Zusammenkleben von Zeichenfolgen ein Pluszeichen zu schreiben. Dieser Fehler tritt besonders häufig auf, wenn Text und Variablen in einem langen Ausdruck im Code verkettet werden.“

Hier sind einige Beispiele:

Falscher Code Richtiger Code
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);

Vergessen, geschweifte Klammern zu schließen

„Das ist ein sehr häufiger Fehler. Es gibt zwei Situationen, in denen das typisch ist:

  1. Sie haben sich entschieden, Code von irgendwoher zu kopieren und haben versehentlich einige geschweifte Klammern übersehen.
  2. Sie machen sich einfach nicht die Mühe, sicherzustellen, dass jeder offenen Klammer eine schließende Klammer entspricht.

„Die zweite Möglichkeit ist, was ich tue. Manchmal übertreibe ich es so sehr, dass ich es vergesse!“ .

„Um diese Fehler zu vermeiden, wird Programmieranfängern normalerweise empfohlen, die schließende geschweifte Klammer unter die öffnende zu schreiben.

Beispiele:

Falscher Code Richtiger Code
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!");
      }
   }
}

Ich habe vergessen, Klammern hinzuzufügen

„Am häufigsten wird dieser Fehler von Entwicklern gemacht, die Programmiersprachen beherrschen, die in ähnlichen Situationen keine Klammern erfordern.

Eine Möglichkeit besteht darin, dass sie einfach vergessen, am Ende eines Methodenaufrufs Klammern zu setzen:

Eine andere Möglichkeit besteht darin, dass sie vergessen, die Bedingung einer if-elseAnweisung in Klammern zu setzen.

Beispiele:

Falscher Code Richtiger Code
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!");
   }
}

mainMethodendeklaration falsch geschrieben

„Sobald sie die verdammte mainMethode deklarieren! Es gibt wahrscheinlich nichts, was Neulinge so sehr aus der Fassung bringt wie diese schlechte Methode. Wichtig ist, dass sie dann immer überrascht sind und sich fragen, warum ihr Programm nicht startet? Und der Programmierer natürlich nicht.“ Schuld daran ist nicht das Programm, der Compiler, der Code-Validator, die Java-Maschine usw. Die Liste der Sündenböcke ist endlos.

Beispiele:

Falscher Code Erläuterung
static void main(String[] args)
publicwird vermisst
public void main(String[] args)
staticwird vermisst
public main(String[] args)
voidwird vermisst
void main(String[] args)
publicund staticfehlen
public static void main(String args)
[]wird vermisst
public static void main()
String[] argswird vermisst
public static int main(String args)
Wir haben intstattdessenvoid

Der Dateiname unterscheidet sich vom Klassennamen

„Nach dem Java-Standard müssen alle Java-Klassen in einer Datei mit demselben Namen wie der Klassenname gespeichert werden. Und wie bereits erwähnt, kommt es hier auf die Groß-/Kleinschreibung der Buchstaben an:

Dateinamen Klassenname Notiz
Lösung.java Lösung Alles ist gut
Lösung s .java Lösung Der Dateiname als überflüssiger Buchstabe „s“
lösung.java _ Lösung Der Dateiname beginnt mit einem Kleinbuchstaben
Lösung. txt Lösung Die Dateierweiterung ist .txt statt .java
Lösung.java Lösung Der Klassenname beginnt mit einem Kleinbuchstaben

„Eigentlich können in einer Datei mehrere Klassen mit der Erweiterung .java deklariert werden, aber nur eine davon darf das Wort publicvor dem Klassennamen haben. Und dieser Name muss mit dem Dateinamen übereinstimmen.“

„Eine .java-Datei muss immer eine Klasse haben, deren Name mit dem Dateinamen übereinstimmt, und diese Klasse muss den publicModifikator haben. Beispiel:

Lösung.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

„Außerdem können Sie mit der Java-Sprache Klassen innerhalb von Klassen schreiben. Dies ist eine weitere Möglichkeit, die oben genannte Einschränkung zu umgehen. Wenn eine öffentliche Klasse (eine Klasse mit dem Modifikator) in einer Datei deklariert ist publicund denselben Namen wie der Dateiname hat, Dann können Sie innerhalb dieser öffentlichen Klasse beliebig viele Klassen deklarieren. Das heißt, es handelt sich dabei nicht mehr um gewöhnliche Klassen, sondern um interne oder verschachtelte Klassen. Beispiel:

Lösung.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}

Vergessen zu schreibenpackage

„Da Programme normalerweise Tausende von Klassen haben, kann es schwierig sein, einfache, verständliche und eindeutige Namen für alle zu finden. Deshalb ist es in Java üblich, Klassen mithilfe des Schlüsselworts in Pakete zu gruppieren. Genau so, wie die Dateien gruppiert werden. package“ in Ordner.

„Ah-ha, deshalb sollte jede Klasse mit einer Angabe des Pakets beginnen, zu dem sie gehört.“

„Genau. Hier ein Beispiel:

Code ohne Paket Korrigiertes Beispiel
public class Solution
{
}
package en.codegym.tasks.task0001;

public class Solution
{
}

Ich habe vergessen hinzuzufügenimport

„Wenn wir die Klasse einer anderen Person in unserem Programm verwenden wollen, haben wir zwei Möglichkeiten: Überall in unserem Code müssen wir auch ihren Paketnamen vor den Namen der Klasse schreiben. Alternativ können wir den vollständig qualifizierten Klassennamen mit dem Schlüsselwort einmal schreiben. import“ . Beispiel:

Ohne Import zu verwenden Import verwenden
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

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

„Beide Optionen funktionieren, aber wenn Sie einfach ScannerIhren Code schreiben, ohne hinzuzufügen import, kann der Compiler nicht erkennen, Scanneraus welchem ​​Paket er die Klasse übernehmen muss, und Ihr Programm lässt sich nicht kompilieren.“

„Danke, Diego. Diese Lektion wird mich dazu bringen, mehr Aufmerksamkeit zu schenken.“

„Damit habe ich gerechnet. Viel Glück!“