Java实现整数格式化为社会保障号码(SSN)的问题求助
问题分析与修正方案
你的代码存在两个核心问题:
- 语法错误:
toString()方法的return语句缺少闭合括号,导致编译失败。 - 格式参数不匹配:
String.format("%03d-%02d-%04d")需要3个整数参数,但你只传入了一个完整的ssNumber,运行时会抛出IllegalFormatArgumentException。
修正后的代码
public String getSSNumber() { String convert = String.valueOf(ssNumber); return convert; } public String toString() { // 拆分9位社保号的三个部分 int part1 = ssNumber / 1000000; // 前3位 int part2 = (ssNumber / 10000) % 100; // 中间2位 int part3 = ssNumber % 10000; // 后4位 return " SSN: " + String.format("%03d-%02d-%04d", part1, part2, part3); }
关键说明
- 数字拆分逻辑:
- 对于9位整数
ssNumber,通过除法和取模运算拆分出前3位、中间2位、后4位。 - 例如:若
ssNumber = 123456789,则part1=123,part2=45,part3=6789。
- 对于9位整数
- 格式补零:
%03d表示不足3位时自动补前导零,%02d和%04d同理,确保即使输入的数字位数不足9位(比如8位的12345678),也能格式化为012-34-5678。
- 语法修正:补上
return语句中缺失的闭合括号,确保代码能正常编译。
内容的提问来源于stack exchange,提问作者Michael Teoro Jr.
相关产品推荐
相关产品推荐

