「おい、若い新兵よ、彼は最も単純なプログラムであっても、毎日たくさんの間違いを犯しているんだ!

「ええと...こんにちは、ディエゴ。坊や、あなたは本当に人々を元気づける方法を知っています!」

「もちろん、そうします! 言うべきことを言う方法を学びましょう。私が言ったように、『毎日』です。より丁寧に言うと、私の挨拶は、「将来成功するプログラマー、もちろん、あなたがそれを吹き飛ばさなければ」を意味します。」

「おお、それではありがとう、最もメタリックな先生! .

「このレッスンが終わったら、あなたは私に感謝するでしょう。ここでは、コンパイラによって指摘された最も一般的なエラーをリストします。そして、あなたの仕事は覚えておくことです。警告は事前に備えています。」

セミコロンを忘れる

「Java プログラマーを目指す人が犯す最も一般的な間違いは、セミコロンに関するものです。むしろ、セミコロンがあるべき場所に存在しないことです。」

「実のところ、私はこの犯罪を繰り返し犯してきました。」

「メソッド内のすべてのステートメントはセミコロンで終わる必要があります。セミコロンはステートメントまたはコマンドを区切るものです。これは、Java コンパイラーに 1 つのコマンドがどこで終了し、次のコマンドが始まるかを伝える方法です。

エラーの例:

間違ったコード 正しいコード
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?");

引用符を閉じるのを忘れる

「Java の初心者にとって 2 番目に多い間違いは、コード内に文字列を記述し、引用符を閉じるのを忘れることです。

コード内のすべての文字列リテラルは、両側を二重引用符 (") で囲む必要があります。初心者プログラマはテキストの先頭に引用符を付けることがよくありますが、最後に引用符を閉じるのを忘れます。

間違ったコード 正しいコード
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.";

文字列を接着するときにプラス記号を含めるのを忘れる

「文字列を扱う際のもう 1 つのよくある間違いは、文字列を結合するときにプラス記号を書き忘れることです。このエラーは、コード内の長い式でテキストと変数が連結されている場合に特によく発生します。

ここではいくつかの例を示します。

間違ったコード 正しいコード
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);

中括弧を閉じ忘れる

「これは非常によくある間違いです。これが典型的な状況は 2 つあります。

  1. どこかからコードをコピーしようとしましたが、誤って中括弧をいくつか見逃しました。
  2. すべての開き括弧が閉じ括弧と一致しているかどうかを確認する必要はありません。」

「2番目の選択肢は私がやることです。時々夢中になって忘れてしまうこともあります!」

「これらのエラーを回避するために、初心者プログラマには通常、開始中括弧の下に終了中括弧を書くことが推奨されます。

例:

間違ったコード 正しいコード
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!");
      }
   }
}

括弧を付け忘れる

「ほとんどの場合、この間違いは、同様の状況で括弧を必要としないプログラミング言語を知っている開発者によって犯されます。

可能性の 1 つは、単にメソッド呼び出しの最後に括弧を付けるのを忘れているということです。

もう 1 つの可能性は、ステートメントの条件をif-else括弧で囲むのを忘れていることです。

例:

間違ったコード 正しいコード
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!");
   }
}

メソッド宣言の書き方mainが間違っている

「彼らが血まみれのメソッドを宣言するとすぐにmain! この貧弱なメソッドほど初心者をつまずかせるものはおそらくありません。重要なのは、彼らは常に驚き、なぜ自分のプログラムが起動しないのか疑問に思うということです。そしてもちろん、プログラマはそうではありません」責任はありませんが、プログラム、コンパイラ、コード検証ツール、Java マシンなどです。スケープゴートのリストは無限にあります。

例:

間違ったコード 説明
static void main(String[] args)
public不足している
public void main(String[] args)
static不足している
public main(String[] args)
void不足している
void main(String[] args)
publicそしてstatic行方不明です
public static void main(String args)
[]不足している
public static void main()
String[] args不足している
public static int main(String args)
代わりintvoid

ファイル名がクラス名と異なります

「Java 標準によれば、すべての Java クラスはクラス名と同じ名前のファイルに保存する必要があります。また、前述したように、ここでは大文字と小文字が重要です。

ファイル名 クラス名 ノート
ソリューション.java 解決 すべて順調
解決.java 解決 ファイル名を余分な文字「s」にする
ソリューション.java 解決 ファイル名は小文字で始まります
解決。TXT 解決 ファイル拡張子は .java ではなく .txt です。
ソリューション.java 解決 クラス名は小文字で始まります

public「実際には、拡張子 .java を持つファイル内で複数のクラスを宣言できますが、クラス名の前にこの単語を含めることができるのは 1 つだけです。そして、これはファイル名と一致する必要があります。

「.java ファイルには常にファイル名と同じ名前のクラスが必要であり、そのクラスには修飾子が必要ですpublic。例:

ソリューション.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

「さらに、Java 言語では、クラス内にクラスを作成できます。これは、上記の制限を回避するもう 1 つの方法です。パブリック クラス (修飾子を持つクラス) がファイル内で宣言されており、その名前がファイル名と同じである場合public、その後、このパブリック クラス内で好きなだけクラスを宣言できます。ただし、これらは通常のクラスではなくなり、内部クラスまたはネストされたクラスになります。例:

ソリューション.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}

書き忘れpackage

「通常、プログラムには何千ものクラスがあるため、すべてのクラスに単純で理解しやすく一意の名前を見つけるのは難しい場合があります。そのため、Java では、キーワードを使用してクラスをパッケージにグループ化するのが通例です。ファイルがグループ化される方法とまったく同じですpackage。フォルダに入れます。」

「ああ、だから、各クラスはそれが属するパッケージを示すことから始める必要があるのです。」

「その通りです。以下に例を示します。

パッケージのないコード 修正例
public class Solution
{
}
package en.codegym.tasks.task0001;

public class Solution
{
}

追加するのを忘れるimport

「プログラムで他の人のクラスを使用したい場合、2 つのオプションがあります。コード内のどこでも、クラス名の前にそのパッケージ名を記述する必要があります。あるいは、キーワードを 1 回付けて完全修飾クラス名を記述することもできますimport」 。 例:

インポートを使用しない場合 インポートの使用
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

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

「どちらのオプションも機能しますが、Scannerを追加せずに単にコードを記述するimportと、コンパイラーはどのパッケージからクラスを取得する必要があるかを理解できずScanner、プログラムはコンパイルできません。」

「ありがとう、ディエゴ。このレッスンでもっと注意を払うようになります。」

「それを期待していたんです。頑張ってください!」