在我提出一個關於減去時間的問題之前,我想我已經擁有了它。然而,當我正在調試時,出現了一些錯誤。基本上我問的是創建一個打卡時鐘,但我不能使用Java日曆API。在Java中減去兩倍
用戶將輸入開始時間和他們衝出的時間,它將計算時間之間的差異。
礦井工作不好,我不知道爲什麼。例如,如果凌晨4點開始,並且凌晨12點結束,則返回8小時00分鐘。這是不正確的。我認爲我爲可能性創建了一個if語句。
這裏是我的代碼:
public static void elapsedTime()
{
Scanner reader = new Scanner (System.in);
System.out.print("Enter the beginning hour: ");
int startingHour = reader.nextInt();
System.out.print("Enter the beginning minute(s): ");
int startingMin = reader.nextInt();
System.out.print("Enter AM/PM: ");
reader.nextLine();
String startingTOD = reader.nextLine();
System.out.print("Enter the ending hour: ");
int endingHour = reader.nextInt();
System.out.print("Enter the ending minute(s): ");
int endingMin = reader.nextInt();
System.out.print("Enter AM/PM: ");
reader.nextLine();
String endingTOD = reader.nextLine();
System.out.println();
int hours;
int minutes = endingMin - startingMin;
String Am = "am" ;
String Pm = "pm" ;
if (endingTOD.equalsIgnoreCase(startingTOD) && minutes < 0 )
{
hours = (endingHour - startingHour) -1 ;
minutes = minutes + 60 ;
System.out.println(hours + " " + minutes);
}
else if (endingHour > startingHour&& endingTOD.equalsIgnoreCase(startingTOD) & minutes > 0 )
{
hours = endingHour - startingHour;
System.out.println(hours + " " + minutes);
}
else if (endingHour > startingHour && endingTOD.equalsIgnoreCase(startingTOD) && minutes == 0 )
{
hours = (endingHour-startingHour);
minutes = 0;
System.out.println(hours + " " + minutes);
}
else if (endingHour < startingHour && endingTOD.equalsIgnoreCase(startingTOD) && minutes == 0 )
{
hours = (endingHour-startingHour) + 12;
minutes = 0;
System.out.println(hours + " " + minutes);
}
else if (endingHour==startingHour && minutes == 0)
{
hours = 12;
minutes = 0;
System.out.println(hours + " " + minutes);
}
else if ((endingTOD.equalsIgnoreCase(Pm) && startingTOD.equalsIgnoreCase(Am)) && minutes > 0)
{
hours = (endingHour - startingHour) + 12;
System.out.println(hours + " " + minutes);
}
else if ((endingTOD.equalsIgnoreCase(Pm) && startingTOD.equalsIgnoreCase(Am)) && minutes < 0)
{
hours = (endingHour - startingHour) -1 ;
minutes = minutes + 60 ;
System.out.println(hours + " " + minutes);
}
else if (endingHour > startingHour && (endingTOD.equalsIgnoreCase(Pm) && startingTOD.equalsIgnoreCase(Am)) && minutes == 0)
{
hours = (endingHour-startingHour) + 12;
minutes = 0;
System.out.println(hours + " " + minutes);
}
else if (endingHour < startingHour &&(endingTOD.equalsIgnoreCase(Pm) && startingTOD.equalsIgnoreCase(Am)) && minutes == 0)
{
hours = (endingHour - startingHour) +24;
minutes = 0;
System.out.println(hours + " " + minutes);
}
else if (endingHour < startingHour &&(endingTOD.equalsIgnoreCase(Pm) && startingTOD.equalsIgnoreCase(Am)) && minutes > 0)
{
hours = (endingHour - startingHour) + 2;
System.out.println(hours + " " + minutes);
}
}
定義*不工作得很好。*;你有什麼問題? – 2015-01-09 21:14:16
那麼我輸入樣本時間來測試它。 8時14分至2時47分返回6小時33分。我希望它返回5小時27分鐘,但它沒有。我以爲我創建了一個覆蓋一切的循環 – DaBom 2015-01-09 21:15:47
咦?從上午8點14分到下午2點47分,這是6小時33分鐘......你的程序工作正常。 – m0skit0 2015-01-09 21:20:23