0

文字列を使用するJavaのコンストラクターがあります。この文字列は常に数値になります。

private final String number;

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

私の場合、この文字列は常に数値であるため、この文字列には常に特定の形式を使用したいと思います。たとえば、メイン メソッドで新しい 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

コンストラクターでそのような形式を宣言するにはどうすればよいですか (私の場合、コンストラクターにある必要があります)。

EDIT:繰り返しになりますが、文字列の使用を避けるなどのより良い実装があることは知っていますが、文字列を使用する理由があります(理由は聞かないでください)。

4

5 に答える 5

3

私は String を使用せずNumber、一般的な組み込み型であるとは呼びません。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 factoryInteger や BigDecimal などと同じように、数値を作成するために を使用することを検討する必要があります。

于 2013-01-11T15:26:44.893 に答える
1

" この文字列は常に数値になります。 "

この文のどこかが間違っているように思えます。内部で数値を表している場合は、数値型を使用する必要があります。必要に応じて、double、 、intまたは などの 10 進数の型になりBigDecimalます。

その番号をどこかに (そのときだけ) 印刷する必要がある場合は、. に変換する必要がありStringます。Java では、数値を書式設定するための豊富なメソッド セットが提供されていますjava.text.NumberFormat

于 2013-01-11T15:28:08.473 に答える
0

わかりました、私はついにこの投稿で答えを見つけたと思います: ゼロで文字列を左パディング

私の場合、それはコンストラクターにとって意味があります:

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

多分これは将来誰にとっても役立つでしょう。

于 2013-01-11T16:15:43.910 に答える
0

まず、コンストラクターで、文字列の有効性をチェックするための解析ステップを追加できます(防御プログラミング、IllegalArgumentExceptionまたはアドホックExceptionサブクラスのスロー)。

次に、数値を0で埋める場合:左側にゼロが付いた整数を埋めるにはどうすればよいですか?

于 2013-01-11T16:12:05.870 に答える
0

クラスの tostring メソッドをオーバーライドするだけです

   public String toString() { 
   }

数値をフォーマットする他の理由がない限り

于 2013-01-11T15:26:52.517 に答える