Hỏi hướng giải quyết bài tập đếm số ngày thứ 6 ngày 13 đến hết năm 2026

Đề bài : tính xem từ bây giờ đến hết năm 2026 có bao nhiêu ngày là thứ sáu ngày 13
đó là những ngày nào? In ra cụ thể từng ngày.

e mới chuyển từ c++ sang java và hơi bỡ ngỡ ! e có bài tập như trên nhưng e kb hướng giải quyết, các bác có thể cho e một hoặc nhiều hướng giải quyết đc k ạ ! e xin chân thành cảm ơn

Không biết câu này của bạn ý là như thế nào? Giả sử ngược lại nếu bài này yêu cầu code bằng C++ thì bạn có “bỡ ngỡ” không? Và bạn sẽ giải quyết ra sao?

7 Likes

dạ ý tưởng có e nếu là trong c++ e sẽ giải quyết bằng vòng lặp ạ ! nhưng hiện tại trong java trong những hàm của Date vs TimeZone thì e kb lấy ra các ngày và thứ trong tuần để lặp như nào ạ T.T e chỉ xin hướng giải thôi chứ k hỏi code ạ mong bác thông cảm T.T

thuật toán thì như lúc bạn học bên C++. Còn đây là cách sử dụng date trong java

5 Likes

Tư tưởng cơ bản là java có nhiều thư viện hỗ trợ hơn, nhưng ở mức core thì code C++ như thế nào thì có thể code Java tương tự như vậy. Nên nếu bạn có thể mô tả lặp bên C++ một cách cụ thể là làm những gì thì mọi người có thể giúp bạn cách chuyển sang Java như thế nào.

5 Likes

dạ e muốn tạo một vòng lặp bắt đầu từ thời gian hiện tại cho đến hết năm 2026 tức ngày 31/12/2026, mỗi lần lặp e sẽ tăng biến gán cho năm lên 1 đơn vị và khi nào gặp thứ 6 ngày 13 thì e sẽ in ra ngày tháng năm đó và biến đếm e tạo trước sẽ tăng lên một đơn vị ạ ! sau cùng e sẽ in ra biến đếm
căn bản là e kb rằng là muốn lặp từ thời gian hiện tại cho đến hết năm 2026 thì e kb cách để cho vào vòng lặp ntn cho hợp lí ấy

e cảm ơn bác nha ! e đọc r ạ

Đặt vấn đề ngược lại: Ngày 13 tháng này là thứ mấy? :smiley:

4 Likes

Vậy mấu chốt là bạn chỉ biết là có thể dùng vòng lặp chứ cũng không biết lặp như thế nào dù dùng code C++ đúng không?
Vậy thì vấn đề là bạn không biết code như thế nào chứ không phải là không biết code bằng Java như thế nào? Vậy thì mình góp ý là lần sau đừng đưa nhưng câu gây bối rối như

Quay lại vấn đề. Câu hỏi của bạn rogp10 trên kia có nghĩa là: nếu chỉ tìm thứ sáu ngày 13, thì tại sao bạn lại xét những ngày 1, ngày 2…ngày 31 làm gì? Tại sao không xét trực tiếp ngày 13 mỗi tháng xem có phải là thứ sáu hay không?
Lúc này sẽ nảy sinh vấn đề: có cách nào tính xem một ngày bất kỳ là thứ mấy hay không? Thư viện Date của Java có support tính năng như vậy hay không? Có công thức nào để tính hay không?

Vấn đề nảy sinh này dễ, gu gồ một vài phút là ra, nên nhường lại cho bạn nhé.

5 Likes

dạ vâng ạ ! có gì bác thông cảm giúp em nhé ! em cảm ơn bác

e cảm ơn bác nha thông não r ạ

Theo mình bạn đã “nhấm nháp” bài này trên c++ rồi thì làm lại cách y chang với java để quen trước đã, sau đó dùng cách “chuyên Java” hơn như bạn nói là Date hay gì đó, nó sẽ hay hơn. Còn vấn đề hướng đi các bác trên đã chỉ rùi, mình gà nên bỏ qua nha ^^.
Chúc bác học tốt.

5 Likes

thanks bac :smiley: :smiley:

Nếu không code, chỉ dùng Toán bạn giải như thế nào?

6 Likes

! còn cách tính vậy nữa cơ à bác e chư abt bác ah

Thử tham khảo cái này xem sao (thật ra là mình vẫn chưa nghĩ ra)

4 Likes

kê bạn =)) mình cx vẫn đang suy nghĩ mà nên 1 tẹo giúp đỡ mình cũng xin nhận hết

Đây là code để làm cho những bạn đang bỡ ngỡ thành không biết gì luôn:

int result = (int)LongStream.range(LocalDate.now().toEpochDay(), LocalDate.of(2027, 1, 1).toEpochDay())
                            .mapToObj(LocalDate::ofEpochDay)
                            .filter(localDate -> localDate.getDayOfMonth() == 13)
                            .filter(localDate -> localDate.getDayOfWeek() == DayOfWeek.FRIDAY)
                            .count();
6 Likes

Đúng là từ bỡ ngỡ sang k hiểu gì luôn ạ :smiley: :smiley: :smiley:

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