繁体   English   中英

使用String.format格式化SSN

[英]Formatting SSN using String.format

我目前正在使用随机生成器为我生成9位数字。 我目前正在尝试在Java中使用String.format来打印像XXX-XX-XXXX这样的随机数字,就像一个社会保险号。 我根本做不到,我不确定该怎么做。 我正在使用模数,似乎我的填充已关闭,或者我完全错了。 问题是我必须使用模数。 非常感谢您为我指明正确方向的任何帮助,谢谢。 我正在尝试修复ID。

public  String toString (){

        System.out.printf("%d\n",ID);

        return  String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ", firstName, lastName,ID%1000,ID%10000, ID%000001000);

    }
}

基本上,您需要两个步骤而不是一个步骤:

  1. 将数字除以10^X即可删除最后X数字。 N / 10^X
  2. 获取模10^Y以取最后Y位数字。 N % 10^Y

修改后的代码

public static int getDigits(int num, int remove, int take) {
    return (num / (int)Math.pow(10, remove)) % (int)Math.pow(10, take);
}

public String toString() {
    return  String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ",
                          firstName, lastName,
                          getDigits(ID, 6, 3), getDigits(ID, 4, 2), getDigits(ID, 0, 4));
}

替代解决方案

将数字转换为String并使用String.substring削减相关部分

public String toString() {
    String IdStr = String.valueOf(ID);
    return  String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ",
                          firstName, lastName,
                          IdStr.substring(0, 3), IdStr.substring(3, 5), IdStr.substring(5, 9));
}

尝试做

return  String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ", firstName, lastName,(int)ID/1000000,(int)(ID%1000000)/10000, ID%10000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM