Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中的构造函数中设置默认字符串格式?_Java_String_Constructor_Format - Fatal编程技术网

如何在Java中的构造函数中设置默认字符串格式?

如何在Java中的构造函数中设置默认字符串格式?,java,string,constructor,format,Java,String,Constructor,Format,我在Java中有一个使用字符串的构造函数。这个字符串总是一个数字 private final String number; public Number (String s) { this.number = s; } 因为这个字符串在我的例子中总是一个数字,所以我希望这个字符串总是使用某种格式。 例如,在我的主方法中创建一些新数字时: public static void main (String[] args) { Number one = new Number("1");

我在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
如何在构造函数中声明这种格式(在我的情况下,它必须在构造函数中)


编辑:同样,我知道有更好的实现方式,比如只避免使用字符串,但我使用字符串是有原因的(不要问我为什么)。

我不会使用字符串,也不会将其称为
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.
}

你应该考虑使用<代码>静态工厂< /代码>创建你的数字,就像整数和BigDimple和其他方法一样。

< P>我不使用String,我不会称它为代码>代码< /COD>这是常见的内置类型。您甚至可以使用您的“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.
}

你应该考虑使用<代码>静态工厂< /代码>来创建你的数字,就像整数和BigDimple和其他方法一样。

你可以在类

中重写ToStand方法。
   public String toString() { 
   }

除非有其他原因格式化数字

,否则您可以在类中重写tostring方法

   public String toString() { 
   }
除非有其他原因格式化数字,否则“此字符串将始终是一个数字。”

我觉得这句话有点不对劲。如果在内部表示数字,则应使用数字类型。根据您的需要,它可以是
double
int
或十进制类型,如
BigDecimal

当您需要在某处打印该数字时(并且只有在那时),您应该将其转换为
字符串。Java提供了一组丰富的方法来格式化
Java.text.NumberFormat

下的数字。“此字符串总是一个数字。”

我觉得这句话有点不对劲。如果在内部表示数字,则应使用数字类型。根据您的需要,它可以是
double
int
或十进制类型,如
BigDecimal


当您需要在某处打印该数字时(并且只有在那时),您应该将其转换为
字符串。Java提供了一组丰富的方法来格式化
Java.text.NumberFormat

下的数字首先,在构造函数中,您可以添加一个解析步骤来检查字符串的有效性(防御性编程,抛出IllegalArgumentException或特殊异常子类)


然后,对于使用0填充数字:

首先,在构造函数中,可以添加一个解析步骤来检查字符串的有效性(防御性编程,抛出IllegalArgumentException或特殊异常子类)


然后,对于用0填充数字:

好的,我想我终于在这篇文章中找到了答案:

在我的情况下,这将意味着建造商:

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

也许这对将来的任何人都有帮助。

好的,我想我终于在这篇文章中找到了答案:

在我的情况下,这将意味着建造商:

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

也许这对将来的任何人都有帮助。

为什么必须在构造函数中?可以是静态final。为什么必须在构造函数中?可能是静态的。