-2
我有一個要求,我可以每天創建3班。換班時間如下:如何檢查兩個時間範圍是否重疊?
06:00 - 14:00
14:01 - 22:00
22:01 - 05:59.
如何檢查換檔時間不重疊?請注意,在第三種情況下,從小時大於到小時。
我有一個要求,我可以每天創建3班。換班時間如下:如何檢查兩個時間範圍是否重疊?
06:00 - 14:00
14:01 - 22:00
22:01 - 05:59.
如何檢查換檔時間不重疊?請注意,在第三種情況下,從小時大於到小時。
最後我已經解決了我自己的問題。如下請見。
public void checkIfTimesOverlapped(){
// eft - existed FROM TIME
// ett - existed TO TIME
// cft - current entered FROM TIME
// ctt - current entered TO TIME
// Note : same FROM TIME and TO TIME is not allowed. so not checking.
float eft = 22.00f;
float ett = 05.00f;
float cft = 23.00f;
float ctt = 24.00f;
if (cft < ctt) {
if (eft < ett) {
if(cft<=ett && ctt>=eft){
System.out.println("overlapped");
}
} else if(eft > ett) {
if(!(cft>ett && ctt<eft)){
System.out.println("overlapped");
}
}
} else if (cft > ctt) {
if (eft < ett) {
if((cft>=eft && cft<=ett) || (ctt>=eft && ctt<=ett)){
System.out.println("overlapped");
}
} else if(eft > ett) {
// already one shift existed with FROM TIME > TO TIME. so again FROM TIME > TO TIME is not possible
System.out.println("overlapped");
}
}
}
你應該遵循[風格指南](https://google.github.io/styleguide/javaguide.html)。它會使你的代碼更具可讀性,並且更易於調試。以更具描述性的方式命名變量非常重要。您不必包含評論以顯示您的變量的用途。而不是像'eft'和'ett'這樣命名變量,而是命名它們:'existingFrom'和'existingTo'或者'originalFrom'或'originalTo'。 –
一下怎麼樣,如果別的嗎? –
只是一個友好的提示,你可能想要閱讀本頁:[如何 - 問問指南](https://stackoverflow.com/help/how-to-ask),所以你可以永遠保證你的問題很容易回答並且儘可能清楚。一定要包括你爲解決你遇到的問題所做的任何努力,以及當你嘗試修復這些問題時發生了什麼。另外不要忘記你的顯示代碼和任何錯誤信息! –
@Matthew Cliatt感謝您的建議。 – RaoPotla