Ralat kompilasi popular

All lectures for MS purposes
Tahap , pelajaran
Tersedia

"Hei, rekrut muda, yang membuat banyak kesilapan setiap hari, walaupun dalam program yang paling mudah!

"Um... Hai, Diego. Nak, awak betul-betul tahu cara menceriakan orang!"

"Sudah tentu, saya lakukan! Belajar bagaimana untuk mengatakan apa yang perlu dikatakan. Seperti yang saya katakan, 'setiap hari'. Meletakkannya dengan lebih sopan, salam saya bermaksud "pengaturcara masa depan yang berjaya, jika, sudah tentu, anda tidak meniupnya ."

"Oooh, terima kasih, cikgu paling metalik! .

"Anda akan berterima kasih kepada saya selepas pelajaran ini. Di sini saya akan menyenaraikan ralat yang paling popular yang dicatat oleh pengkompil. Dan tugas anda adalah untuk mengingati. Dimaklumkan adalah dipersenjatai.

Melupakan koma bertitik

"Kesilapan yang paling biasa dilakukan oleh pengaturcara Java yang bercita-cita tinggi melibatkan koma bertitik. Atau sebaliknya, ketiadaannya di tempat yang sepatutnya."

"Sebenarnya... saya telah melakukan kesalahan ini berulang kali."

"Setiap pernyataan di dalam kaedah mesti diakhiri dengan koma bertitik. Koma bernoktah ialah yang memisahkan penyataan atau arahan: ini adalah cara kita memberitahu pengkompil Java di mana satu perintah berakhir dan seterusnya bermula.

Contoh ralat:

kod salah Kod yang betul
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?");

Terlupa untuk menutup petikan

"Kesilapan kedua yang paling biasa untuk pendatang baru ke Java ialah menulis rentetan dalam kod dan kemudian lupa untuk menutup petikan.

Setiap rentetan literal dalam kod mesti disertakan pada kedua-dua belah dengan tanda petikan berganda ("). Pengaturcara pemula selalunya meletakkan tanda petikan pada permulaan teks, tetapi mereka terlupa untuk menutupnya pada penghujungnya.

kod salah Kod yang betul
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.";

Terlupa memasukkan tanda tambah apabila melekatkan tali

"Satu lagi kesilapan biasa apabila bekerja dengan rentetan ialah terlupa untuk menulis tanda tambah apabila melekatkan rentetan bersama-sama. Kesilapan ini amat berleluasa apabila teks dan pembolehubah digabungkan dalam ungkapan panjang dalam kod.

Berikut adalah beberapa contoh:

kod salah Kod yang betul
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);

Terlupa untuk menutup pendakap kerinting

"Ini adalah kesilapan yang sangat biasa. Terdapat dua situasi di mana ini adalah tipikal:

  1. Anda memutuskan untuk menyalin kod dari suatu tempat dan secara tidak sengaja terlepas beberapa pendakap kerinting.
  2. Anda tidak menyusahkan diri sendiri untuk memastikan setiap kurungan terbuka dipadankan dengan kurungan penutup."

"Pilihan kedua ialah apa yang saya lakukan. Kadang-kadang saya terbawa-bawa sehingga saya lupa!" .

"Untuk mengelakkan ralat ini, biasanya disyorkan untuk pengaturcara pemula untuk menulis pendakap kerinting penutup di bawah pendakap pembukaan.

Contoh:

kod salah Kod yang betul
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!");
      }
   }
}

Terlupa menambah kurungan

"Selalunya kesilapan ini dilakukan oleh pembangun yang mengetahui bahasa pengaturcaraan yang tidak memerlukan tanda kurung dalam situasi yang sama.

Satu kemungkinan ialah mereka lupa untuk meletakkan tanda kurung di penghujung panggilan kaedah:

Kemungkinan lain ialah mereka terlupa untuk membungkus syarat pernyataan if-elsedalam kurungan.

Contoh:

kod salah Kod yang betul
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!");
   }
}

Menulis mainpengisytiharan kaedah dengan salah

"Sebaik sahaja mereka mengisytiharkan mainkaedah berdarah! Mungkin tiada apa-apa yang membingungkan pemula seperti kaedah buruk ini. Yang penting, mereka sentiasa terkejut dan tertanya-tanya mengapa program mereka tidak akan bermula? Dan, sudah tentu, pengaturcara tidak Tidak perlu dipersalahkan, tetapi program, pengkompil, pengesah kod, mesin Java, dll. Senarai kambing hitam tidak berkesudahan.

Contoh:

kod salah Penjelasan
static void main(String[] args)
publicsedang hilang
public void main(String[] args)
staticsedang hilang
public main(String[] args)
voidsedang hilang
void main(String[] args)
publicdan statichilang
public static void main(String args)
[]sedang hilang
public static void main()
String[] argssedang hilang
public static int main(String args)
Kami mempunyai intbukannyavoid

Nama fail berbeza daripada nama kelas

"Mengikut standard Java, semua kelas Java mesti disimpan dalam fail dengan nama yang sama dengan nama kelas. Dan seperti yang dinyatakan sebelum ini, kes huruf penting di sini:

Nama fail Nama kelas Catatan
Solution.java Penyelesaian Semuanya baik-baik sahaja
Penyelesaian s .java Penyelesaian Nama fail sebagai huruf 's' berlebihan
s olution.java Penyelesaian Nama fail bermula dengan huruf kecil
Penyelesaian. txt Penyelesaian Sambungan fail ialah .txt dan bukannya .java
Solution.java penyelesaian Nama kelas bermula dengan huruf kecil

"Sebenarnya, beberapa kelas boleh diisytiharkan dalam fail dengan sambungan .java, tetapi hanya satu daripada mereka boleh mempunyai perkataan publicsebelum nama kelas. Dan ini adalah nama yang mesti sepadan dengan nama fail.

"Fail .java mesti sentiasa mempunyai kelas yang namanya sama dengan nama fail dan kelas itu perlu mempunyai pengubah publicsuai. Contoh:

Solution.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

"Selain itu, bahasa Java membolehkan anda menulis kelas dalam kelas. Ini adalah satu lagi cara untuk mengatasi had di atas. Jika kelas awam (kelas dengan pengubah suai) publicdiisytiharkan dalam fail dan mempunyai nama yang sama dengan nama fail, maka anda boleh mengisytiharkan seberapa banyak kelas yang anda suka di dalam kelas awam ini. Oleh itu, ini bukan lagi kelas biasa. Sebaliknya, ia akan menjadi kelas dalaman atau bersarang. Contoh:

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

   public static class Pineapple
   {
   }
}

Lupa nak menulispackage

"Memandangkan program biasanya mempunyai beribu-ribu kelas, sukar untuk mencari nama yang ringkas, mudah difahami dan unik untuk kesemuanya. Itulah sebabnya di Java adalah kebiasaan untuk mengumpulkan kelas ke dalam pakej menggunakan kata kunci. Persis cara fail packagedikumpulkan ke dalam folder."

"Ah-ha, jadi itulah sebabnya setiap kelas harus dimulakan dengan petunjuk tentang pakej yang dimilikinya."

"Tepat sekali. Ini contohnya:

Kod tanpa pakej Contoh yang diperbetulkan
public class Solution
{
}
package en.codegym.tasks.task0001;

public class Solution
{
}

Lupa nak tambahimport

"Jika kami ingin menggunakan kelas orang lain dalam program kami, kami mempunyai dua pilihan: di mana-mana dalam kod kami, kami juga mesti menulis nama pakejnya sebelum nama kelas. Sebagai alternatif, kami boleh menulis nama kelas yang layak sepenuhnya dengan kata kunci importsekali Contoh:

Tanpa menggunakan import Menggunakan import
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

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

"Kedua-dua pilihan berfungsi, tetapi jika anda hanya menulis Scannerdalam kod anda tanpa menambah import, maka pengkompil tidak akan dapat memahami pakej mana yang diperlukan untuk mengambil kelas Scannerdan program anda tidak akan dikompil."

"Terima kasih, Diego. Pelajaran ini akan membuatkan saya lebih memberi perhatian."

"Itulah yang saya harapkan. Semoga berjaya!"

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