[英]How can I set a default String format in my constructor in Java?
我有一個使用字符串的Java構造函數。 該字符串將始終是數字。
private final String number;
public Number (String s) {
this.number = s;
}
由於在我的情況下此字符串始終是數字,因此我希望此字符串始終使用某種格式。 例如,在我的main方法中創建一些新Numbers時:
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
如何在構造函數中聲明這種格式(在我的情況下,必須在構造函數中)?
編輯:同樣,我知道還有更好的實現,例如只是避免使用字符串,但是有一些原因使我使用字符串(不要問我為什么)。
我不會使用String,也不會將其稱為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
來創建數字,就像Integer和BigDecimal以及其他方法一樣。
“此字符串將始終是數字。”
我覺得這句話有些不對勁。 如果在內部表示數字,則應使用數字類型。 根據您的需要,它可以是double
, int
或小數類型,例如BigDecimal
。
當您需要將該數字打印在某個地方(僅此時)時,應將其轉換為String
。 Java提供了一組豐富的方法來格式化java.text.NumberFormat
下的數字。
您可以在類中重寫tostring方法
public String toString() {
}
除非有其他原因格式化數字
首先,在構造函數中,您可以添加一個解析步驟來檢查String的有效性(防御性編程,拋出IllegalArgumentException或臨時Exception子類)。
然后,用0填充數字: 如何在左側填充零的整數?
好的,我想我終於在這篇文章中找到了答案: 左用零填充字符串
就我而言,這對構造函數意味着:
public Number(String s) {
this.number = String.format("%06d", Integer.parseInt(s));
}
也許這對將來的任何人都有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.