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

dev*_*ose 1 java string stringbuilder string-formatting

我正在转换longString使用String.format().当数字> 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

实际产出:合同#:0000083-001

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

Kar*_*cki 7

long account = 0000123;是八进制数.0123 oct是83 dec,这使你的输出正确.如果你需要123 dec只是写long account = 123;为前导零对存储的值没有影响long.