Java实现姓名格式化:将输入姓名转为「姓, 名 中间名首字母.」格式
问题根源
你的代码存在两处核心逻辑错误:
- 你拿到的
mn是middleName字符串内部的空格索引,不是原输入字符串input的索引,直接用input.substring(mn+1)截取姓氏会出现错位,这也是你输出ry A Lee的直接原因。 - 输出语句中错误打印了
mn这个整型索引值,而非中间名的首字母,不符合输出格式要求。
修复后可运行代码
import java.util.Scanner; public class NameFormat { public static void main(String[] args) { int mn; String firstName; String lastName; String middleName; Scanner scnr = new Scanner(System.in); String input = scnr.nextLine(); // 截取名字 int fn = input.indexOf(" "); firstName = input.substring(0, fn); // 截取中间名+姓氏的组合字符串 String midAndLast = input.substring(fn+1); // 拿到组合字符串里的空格位置,拆分中间名和姓氏 mn = midAndLast.indexOf(" "); middleName = midAndLast.substring(0, mn); lastName = midAndLast.substring(mn + 1); // 按要求格式输出 System.out.println(lastName + ", " + firstName + " " + middleName.charAt(0) + "."); scnr.close(); } }
测试验证
输入Marry A Lee,输出为Lee, Marry A.;输入John Anthony Brown,输出为Brown, John A.,完全符合规则要求。
内容的提问来源于stack exchange,提问作者pjrahal
相关产品推荐
相关产品推荐

