Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String Formatting_Stringbuilder - Fatal编程技术网

Java 从长字符串转换为字符串时保持前导零

Java 从长字符串转换为字符串时保持前导零,java,string,string-formatting,stringbuilder,Java,String,String Formatting,Stringbuilder,我正在使用String.format()将long转换为String。当传递大于0的数字时,它可以正常工作,但当我将前导零添加到该数字时,在输出中会得到不同的数字。我的要求是在通过前导零时向用户显示前导零。请告知 public class CreateContractNumber { public static void main(String[] args) { long account = 0000123; long schedule = 001; CreateC

我正在使用
String.format()
long
转换为
String
。当传递大于0的数字时,它可以正常工作,但当我将前导零添加到该数字时,在输出中会得到不同的数字。我的要求是在通过前导零时向用户显示前导零。请告知

public class CreateContractNumber {
  public static void main(String[] args) {
    long account = 0000123;
    long schedule = 001;
    CreateContractNumber ccn = new CreateContractNumber();
    System.out.println("CONTRACT #: "+ccn.createContNbr(account, schedule));
  }

  private String createContNbr(long account, long schedule) {
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("%07d", account);
    sb.append("-");
    sb.append(String.format("%03d", schedule);
    return sb.toString();
  }
}
实际产量: 合同#:0000083-001

预期产出:
合同#:0000123-001

长账户=0000123是一个八进制数。0123年10月是12月83日,这使您的输出正确。如果您需要123 dec,只需编写
longcount=123作为前导零对存储在
long

long account=0000123中的值没有影响是一个八进制数。0123年10月是12月83日,这使您的输出正确。如果您需要123 dec,只需编写
longcount=123
因为前导零对存储在
long

中的值没有影响,像
long
这样的类型不知道前导零。实际上,Java将任何带前导
0
的数字解释为八进制数(不是十进制的数字,而是八进制格式的数字)。前导零之类的内容仅用于显示/格式化,因此应仅保留在格式化程序类或字符串中。因此,您应该在
long
上进行计算,然后应用格式化程序模式以适当数量的前导零显示。像
long
这样的类型不知道前导零。实际上,Java将任何带前导
0
的数字解释为八进制数(不是十进制的数字,而是八进制格式的数字)。前导零之类的内容仅用于显示/格式化,因此应仅保留在格式化程序类或字符串中。因此,您应该在
long
上进行计算,然后应用格式化程序模式以适当数量的前导零显示。感谢您的解释。123是这个数字应该是什么样子。谢谢你的解释。123是数字应该是什么样子。