Switch trong java

Cho em hỏi vì sao trong Java mình phải khai báo giá trị của biến trước khi thực hiện gán bên trong switch vậy ạ?

Vì nếu em không gán trước thì dòng in hai biến ngoài vòng switch báo lỗi: " variable might have not been initialized"

Có bạn nói không đảm bảo rằng đến lúc print thì majorName được gán. Nhưng khi em thử giá trị có thể cho KQ đúng thì nó cũng không in ra nếu không gán null trước.
code1
code2

1 Like

Lỡ từ đầu tới cuối, không có chỗ nào gán giá trị cho biến đó thì sao?

7 Likes

Compiler của Java có nhận thấy có thể có TH cậu không gán giá trị cho biến majorName (ở TH default). Do đó, cậu gặp lỗi compile error.
Cậu có thể sửa theo 2 cách này:

  • Gán null cho biến đó trước switch case (cậu đã làm điều đó rồi).
  • Đảm bảo gán giá trị ở tất cả các case của switch (bao gồm cả default).

Miễn cậu đảm bảo trong mọi TH, trước khi biến đó được sử dụng, nó đã được khởi tạo là được.
Hope it helps!

7 Likes

Bác @library nói chuẩn rồi. Trong java trước khi sử dụng biến thì biến cần phải có giá trị đã. Bạn không cần gán ngay khi khai báo, nhưng phải đảm bảo gán giá trị cho biến trước khi sử dụng.

Trong code của bạn thì khai báo majorName không có init value (giả sử vậy đi). Đi qua switch case nhưng cũng không đảm bảo 100% majorName được gán giá trị (default case). Do đó dòng cuối sử dụng majorName sẽ bị lỗi.

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?