2016-07-25 45 views
-1

上週我剛剛開始學習Java,目前正在進行練習。基本上,問題是你需要在軍隊時兩個數字,然後輸出有什麼區別例如格式化數字以獲得軍隊時間(Big Java Ex。4.15)

Please Enter First time : 0900 
Please Enter second time: 1730 
Result - > 8 hours and 30 minutes 

問題的獎金是要確保程序工作,如果第一次比第二大。首先,我要解決的第一部分,繼承人是我迄今爲止

class TimeInterval{ 
     private double timeOne; 
     private double timeTwo; 
     public TimeInterval(double timeOne, double timeTwo){ 
      timeOne = this.timeOne; 
      timeTwo = this.timeTwo; 
     } 

     public double getMinutes(){ 
      double minuteDiff = timeTwo - timeOne; 
      minuteDiff = minuteDiff%60.0; 
      return minuteDiff; 
     } 
     public double getHours(){ 
      double hours = timeTwo - timeOne; 
      hours = hours - getMinutes(); 
      hours = hours/60.0; 
      return hours; 
    } 
} 

public class DataSet{ 
    public static void main(String [] args){ 
     TimeInterval time = new TimeInterval(0900,1730); 

    } 
} 

現在繼承人什麼迷幻。我想用timeOne作爲我的新對象0900,但我收到錯誤。它說「整數太長」,這對我來說似乎很有趣,所以我做了一些研究。在我的書的第四章的最後一節,我們談論的格式化的東西,像System.out.printf,像%d, %f

我看着SO,我找到了一種方法,我可以做這樣的事情

String.format("%05d", yournumber); 

這裏你可以在你的號碼前加上5個0。問題是,我不太清楚如何將其實現到我的代碼中。我嘗試設置timeTwo = String.format ...等,但後來因爲它的一個字符串,我不能真的對它做數學。此外,它不會讓我把它轉換成雙後String.format.我應該如何處理我的問題?

+0

你必須來自美國,24小時時間被稱爲[軍事時間](https://en.wikipedia.org/wiki/Military_time)。世界上大部分地區都是使用12小時制和24小時制的「雙語」,前者用於休閒場合,後者用於半導體火車時刻表。所以最好使用術語「24小時制」。 –

+0

啊也許正式。我在加拿大這樣稱呼,沒有人理解我。 –

+0

引用維基百科的文章:「它在美國被稱爲軍事時間[4],英語爲加拿大的語言,還有其他一些國家[1],其中12小時的時鐘仍占主導地位。」涵蓋了地球上74億人口中的0.4% –

回答

3

數字文本以零開始解釋爲octal數字,基數爲8,只能使用數字0-7。

因此數字文字0900是無效的八進制數字。嘗試:

TimeInterval time = new TimeInterval(900, 1730); 

提示:避免使用double你字段和參數。改用int,這樣就不會有double的不精確。 int可以處理您需要的任何數量/時間。

+0

是啊您的權利,我想我必須先用數字做數學,所以我使他們雙打。好吧,我知道我不能做0900,但有沒有辦法改變我的變量,所以我可以輸入0900?在一個不同的數字系統中,或許,我對八進制數字或任何東西都不太瞭解,但是必須有一種方法是正確的? –

+0

@cres如果你想「輸入數據」,我假設你的意思是一個字符串?如果是這樣,你可以像這樣解析一個字符串到一個int int int = Integer.parseInt(「1234」);' – Bohemian

+0

我只是想說,爲了學習的目的,有一種方法可以重新配置我的double,這樣它就會接受x 900之前的0的數量還是那種?所以,一旦我放了(0900,1730),這確實會起作用嗎? –

-2

請參考此鏈接的答案

https://www.mkyong.com/java/how-to-calculate-date-time-difference-in-java/

1)上面的鏈接顯示瞭如何長值轉換爲日期和計算差異

+0

爲什麼他們使用多頭?有沒有辦法讓我自己的變量(timeTwo)能夠接受0的在前面,或者甚至一個0的 –

+0

這是不可能通過減去兩個雙值來獲得時間間隔...... ,因爲0930在時間上與0930不同0930在雙倍值被視爲930值而0930在09:30被視爲更多示例 0999有可能出現雙倍值,而0999時間不可能。 .. 首先將時間格式的值首先轉換然後做相減... 希望這可以幫助您解決問題... – George