“嘿,小新兵,天天犯一堆錯誤,最簡單的程序也不行!

“嗯……嗨,迪亞哥。小子,你真會讓人開心!”

“當然,我知道!學習如何說出需要說的話。就像我說的,‘每一天’。更禮貌地說,我的問候意味著“未來成功的程序員,當然,如果你沒有搞砸的話”

“哦,那好吧,謝謝你,我最有金屬感的老師! .

“學完這節課你會感謝我的。在這裡,我將列出編譯器注意到的最常見的錯誤。你的工作是記住。預先警告是預先準備好的。

忘記分號

“有抱負的 Java 程序員最常犯的錯誤涉及分號。或者更確切地說,分號沒有出現在應該出現的地方。”

“事實是......我已經多次犯下這種罪行。”

“方法中的每個語句都必須以分號結尾。分號用於分隔語句或命令:這就是我們告訴 Java 編譯器一個命令結束和下一個命令開始的方式。

錯誤示例:

不正確的代碼 正確的代碼
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 新手來說,第二個最常見的錯誤是在代碼中寫了一個字符串,然後忘記關閉引號。

代碼中的每一個字符串文字都必須用雙引號 (") 括起來。初學者經常把引號放在文本的開頭,但他們忘記在末尾將引號括起來。

不正確的代碼 正確的代碼
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.";

將字符串粘合在一起時忘記包含加號

“使用字符串時的另一個常見錯誤是在將字符串粘合在一起時忘記寫加號。當文本和變量在代碼中的長表達式中連接時,此錯誤尤其普遍。

這裡有些例子:

不正確的代碼 正確的代碼
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);

忘記關閉大括號

“這是一個非常常見的錯誤。有兩種典型的情況:

  1. 您決定從某處複製代碼,但不小心遺漏了一些大括號。
  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!");
      }
   }
}

忘記加括號

“大多數情況下,這個錯誤是由了解在類似情況下不需要括號的編程語言的開發人員犯的。

一種可能是他們只是忘記在方法調用的末尾加上括號:

另一種可能是他們忘記將語句的條件括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)
我們有int而不是void

文件名與類名不同

“根據 Java 標準,所有 Java 類都必須存儲在一個與類名同名的文件中。而且如前所述,字母的大小寫在這裡很重要:

文件名 班級名稱 筆記
解決方案.java 解決方案 一切安好
解決方案.java 解決方案 文件名作為一個多餘的字母's'
解決方案.java 解決方案 文件名以小寫字母開頭
解決方案。TXT 解決方案 文件擴展名為 .txt 而不是 .java
解決方案.java 解決方案 類名以小寫字母開頭

public“實際上,在一個擴展名為.java的文件中可以聲明多個類,但其中只有一個類名前可以有單詞。而且這個名稱必須與文件名相匹配。

“.java 文件必須始終有一個名稱與文件名相同的類,並且該類需要具有修飾符public。示例:

解決方案.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

“此外,Java 語言允許您在類中編寫類。這是繞過上述限制的另一種方法。如果在文件中聲明了一個公共類(帶有修飾符的類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

“如果我們想在我們的程序中使用別人的類,我們有兩個選擇:在我們的代碼中的任何地方,我們還必須在類名之前寫它的包名。或者,我們可以用關鍵字 once 寫完全限定類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從哪個包中獲取類,你的程序將無法編譯。”

“謝謝你,迭戈。這一節課會讓我更加專心。”

“這就是我所指望的。祝你好運!”