2013-01-11 67 views
0

我有一個使用字符串的Java構造函數。這個字符串總是會成爲一個數字。如何在Java的構造函數中設置默認的字符串格式?

private final String number; 

public Number (String s) { 
    this.number = s; 
} 

由於這個字符串總是一個數字在我的情況下,我想這個字符串總是使用某種格式。 例如,在我的主要方法創造一些新的數字時:

public static void main (String[] args) { 

    Number one = new Number("1"); 
    Number ten = new Number("10"); 

    System.out.println("Number one is: " + one); 
    System.out.println("Number ten is: " + ten); 
} 

我想它打印出來是這樣的:

Number one is: 000001 
Number ten is: 000010 

我怎麼能在我的構造函數聲明這樣的格式(在我的情況下,它必須在構造函數中)?

編輯:再次,我知道有更好的實現,如只是避免使用字符串,但有理由爲什麼我使用字符串(不要問我爲什麼)。

+1

爲什麼它必須在構造函數中?可能是靜態的最後。 – duffymo

回答

0

好吧,我想我終於發現在這個職位的答案: Left padding a String with Zeros

在我而言,這將意味着在構造函數:

public Number(String s) { 
    this.number = String.format("%06d", Integer.parseInt(s)); 
} 

也許這對未來的任何人都有幫助。

3

我不會使用字符串,我不會稱之爲Number,這是一種常見的內置類型。你甚至可能你的「號碼」類擴展Number

class MyNumber extends Number { 
    final long num; 

    MyNumber(long num) { this.num = num; } 

    public String toString() { return String.format("%06d", num); } 

    // other number methods. 
} 

你應該考慮使用static factory用於創建數字就是這個樣子整數和BigDecimal和別人做。

0

你可以重寫ToString方法的類

public String toString() { 
    } 

除非有一些其他原因格式化數字

1

「這個字符串總是會是一個數字。」

關於這個句子的某些事情對我來說似乎是錯誤的。如果你在內部表示一個數字,你應該使用數字類型。根據您的需求,它可能是doubleint或小數類型,如BigDecimal

當你需要在某個地方打印該號碼(並且只有這樣)時,你應該將其轉換爲String。 Java提供了一組豐富的方法來格式化java.text.NumberFormat下的數字。