2016-05-03 122 views
0

我不知道如何在JAVA中將整數轉換爲24小時格式。如何在JAVA中將整數轉換爲24小時格式?

例如:

public class Activity 
{ 
    private Subject subject; 
    private int start; 
    private int duration; 
    private String room; 
    private int capacity; 
    private int enrolled; 


public Activity(Subject subject, int start, int duration, String room, int capacity) 
{ 
    this.subject = subject; 
    this.start = start; 
    this.duration = duration; 
    this.room = room; 
    this.capacity = capacity; 
} 

@Override 
public String toString() 
{ 
    return subject.getNumber() + " " + start + " " + duration + "hrs" + " " + enrolled + "/" + capacity; 
} 
} 

在toString()方法,我想爲int varaible開始到格式轉換HH:00。開始變量是從0-2的整數 - 18. 我嘗試添加方法是這樣的:

public String formatted(int n) 
{ 
    int H1 = n/10; 
    int H2 = n % 10; 
    return H1 + H2 + ":00"; 
} 

那麼變量開始傳遞給該方法。但它不起作用。我不明白哪裏出了問題。

我需要一些幫助,請! PS:結果應該看起來像「48024 18:00 1hrs 0/200」,除了啓動變量,我得到了正確格式化的所有其他變量。

+0

如果你這是一個Java 8的問題,我建議你使用[TemporalAccessor](http://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAccessor.html )開始時間和[TemporalAmount](http://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAmount.html)。對於日期格式,您有[DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)。 – dabadaba

+0

還有一個java'Duration'類。 – bvdb

+0

也可以'返回「」+ H1 + H2 +「:00」;' – bvdb

回答

5

您的方法失敗了,因爲你的代碼就相當於:

return (H1 + H2) + ":00"; 

所以它總結每個數字之前追加字符串!

你可以在 「正確」(或實際破解)就這樣做:

return H1 + (H2 + ":00"); 

甚至更​​好,使用String.format

public String formatted(int n) { 
    // print "n" with 2 digits and append ":00" 
    return String.format("%02d:00", n); 
} 
+0

爲什麼不呢? String.format(「%02d:00」,n); –

+0

@NicolasFilotto顯然!更正:) –

+0

感謝您的幫助! –

0

你可以這樣做:

public String formatted(int n) 
{ 
    String hours = ""; 
    if(n < 10) 
    { 
     hours = "0" + n; 
    } 
    else 
    { 
     hours = "" + n; 
    } 
    return hours + ":00"; 
} 
+0

請問爲什麼我寫的方法是錯誤的?我不明白?它看起來對我是正確的。 –

+0

@AlexMa看看ControlAltDel的答案爲什麼你錯了...... – brso05

+0

謝謝你的幫助! –

2

你需要轉換成字符串在您添加或將只需添加數字

public String formatted(int n) 
    { 
     int H1 = n/10; 
     int H2 = n % 10; 
     return H1 + "" + H2 + ":00"; 
    } 
+0

哦......這就是爲什麼!非常感謝!! –

0

簡單的解決方法:return "" + H1 + H2 + ":00";會做。

Java只是從左到右處理這一行。 所以如果它第一次遇到兩個整數,它會加起來。

但是,如果您通過放入String(即使它爲空)開始,則行爲將被糾正。

還有其他更具可讀性的替代方案以及:

return String.valueOf(H1) + H2 + ":00"; 

也有許多實用工具類,可以幫助您SimpleDateFormatDuration會感到很有趣。但在你的情況下,保持簡單。 :)

相關問題