使用 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);
}
}
试试
return String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ", firstName, lastName,(int)ID/1000000,(int)(ID%1000000)/10000, ID%10000);
基本上你需要两个步骤而不是一个:
- 将数字除以
10^X
以删除最后 X
位。 (N / 10^X
)
- 获取数字模
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));
}
我目前正在使用随机生成器为我生成 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);
}
}
试试
return String.format("First Name: %12s LastName %12s ID: %03d-%02d-%04d ", firstName, lastName,(int)ID/1000000,(int)(ID%1000000)/10000, ID%10000);
基本上你需要两个步骤而不是一个:
- 将数字除以
10^X
以删除最后X
位。 (N / 10^X
) - 获取数字模
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));
}