Tôi biết, tôi biết, có rất nhiều câu trả lời đơn giản bao gồm hầu hết các trường hợp để tránh điều này.Khai báo biến bên trong câu lệnh `if` trong Java là một kiểu khác tùy theo điều kiện
Trong trường hợp của tôi, tôi muốn sử dụng thông tin người dùng nhập để tạo người chơi CPU trong trò chơi. Nếu người dùng chọn chế độ dễ, thì tôi muốn khai báo và khởi tạo một thể hiện của lớp EasyPlayer
. Nếu không, tôi muốn khai báo và khởi tạo một thể hiện của lớp HardPlayer
. Dù bằng cách nào, tên cụ thể của biến cần phải là "cpu" và phần còn lại của mã hoạt động trên "cpu" bừa bãi. Đó là, tất cả những khác biệt trong cách thức các hoạt động này được xây dựng trong các lớp khác nhau của chúng, phân lớp lớp CpuPlayer
.
Vì vậy, đây là các mã:
// Set the opponent.
if (difficulty == 0){
EasyPlayer cpu = new EasyPlayer(num_rounds);
}
else{
HardPlayer cpu = new HardPlayer(num_rounds);
}
này mang lại cho tôi những cannot find symbol
lỗi luôn gây phiền nhiễu. Từ những gì tôi có thể đọc, mọi người nói rằng bạn không thể khai báo bên trong một điều kiện như thế này do vấn đề phạm vi và khả năng nó không bao giờ xảy ra.
Nếu có, cách nào đúng để khai báo thay thế một biến duy nhất là một trong hai lớp khác nhau dựa trên đầu vào của người dùng?
+1 để nhận ra rằng giải pháp bạn có ở đây không đủ và đến với SO để được trợ giúp. –