Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

return đặt ở trong vòng lặp for

21:10 26-12-2017 2.053 lượt xem 6 bình luận 23:17 04-01-2018

Mình có đoạn code này :

  public bool Tim(Hocvien hv)
        {
           foreach(Hocvien a in dmHocVien)
            {
                if (a == hv)
                {
                    return true;
                }
                else return false;
            }
         
        }

tại sao mình đặt return trong for thi bị lỗi : not all code paths return a value;

mình đặt ngoài for thì chạy bình thường nhưng vs đoạn code trên thì tại sao lại bị lỗi ??

Mong được sự giải đáp :D

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
BadBoy đã bình luận 23:17 04-01-2018

tks bạn ^^ mình hiểu rồi

Dinh Tona đã bình luận 13:45 30-12-2017
public bool Tim(Hocvien hv) //Đây là một hàm bắt buộc phải trả về một giá trị nào đó, theo như khai báo, kết thúc hàm này phải return true hoặc false
        {
           foreach(Hocvien a in dmHocVien) // đây là một vòng lặp, nó chỉ được chạy khi dmHocVien != null
            {
                if (a == hv)
                {
                    return true;
                }
                else return false; // bạn return trong đây là đúng, nhưng chưa có đủ, nếu dmHocVien null thì nó sẽ không chạy vào đây, đồng nghĩa là function này không có giá trị trả về
            }

         //Bạn cần một cái return ở đây, để nếu cái dmHocVien có null thì bạn vẫn return giá trị được
        }

Chúc vui ^^!

thuymy đã bình luận 10:57 28-12-2017
public bool Tim(Hocvien hv)
        {
            foreach (Hocvien a in dmHocVien)
                if (a == hv)
                    return true;
            return false;
        }

 

Nguyễn Thái Hải đã bình luận 16:18 27-12-2017

thuật toán bạn hơi dở. cái return false để ở ngoài vòng lặp luôn. Như thế nó sẽ chạy nhah hơn. Nên tìm hiểu về big O nha

Nguyễn Nhật Nam đã bình luận 15:51 27-12-2017

Có vẻ như bạn đang muốn tìm kiếm hv, nếu tìm không ra thì return false đúng không? Hãy nhớ 1 qui tắc khi dùng vòng lặp đó là cái gì không cần lặp thì không cho vào vòng lặp. Bạn cần nó lặp lại việc check a == hv để nếu tìm thấy thì trả về true ngay lập tức. Tức là việc kiểm tra nhằm mục đích trả về này được lặp cho đến hết danh sách. Còn việc trả về false CHỈ ĐƯỢC THỰC HIỆN NẾU không tìm được a == hv, tức là nó KHÔNG ĐƯỢC LẶP LẠI mà chỉ cần chạy MỘT LẦN DUY NHẤT. Do đó câu return false bạn hãy đặt ngoài vòng for.

Câu hỏi mới nhất