Java新手求助:按规则组合姓名与随机数生成用户名实现问题
修正后可直接运行的代码
import java.util.Random; import java.util.Scanner; public class FirstNameLastName { public static void main(String[] args) { try (Scanner in = new Scanner(System.in)) { // 输入姓氏并存储 System.out.println("请输入您的姓氏(英文):"); String lastName = in.nextLine().trim(); // 输入名字并存储 System.out.println("请输入您的名字(英文):"); String firstName = in.nextLine().trim(); // 截取姓氏前4位,长度不足4位则取全部内容 String lastNamePart = lastName.length() >=4 ? lastName.substring(0,4) : lastName; // 截取名字前2位,长度不足2位则取全部内容 String firstNamePart = firstName.length() >=2 ? firstName.substring(0,2) : firstName; // 自动生成10-99的两位随机数 int randomNum = new Random().nextInt(90) + 10; // 拼接输出用户名 String userName = lastNamePart + firstNamePart + randomNum; System.out.println("生成的用户名为:" + userName); } } }
原有代码的问题说明
- 前两次输入的姓氏、名字没有用变量接收,输入内容直接被丢弃没有参与后续逻辑
- 需求要求程序自动截取字符、自动生成随机数,你编写的代码是让用户手动输入这三部分,完全不符合要求
- 变量命名不符合Java小驼峰规范,首字母大写是类名的命名规则,不要用在普通变量上
- 没有做边界兼容:如果用户输入的姓氏不足4位、名字不足2位时,硬编码截取会报字符串索引越界错误,修正后的代码做了长度判断兼容
内容的提问来源于stack exchange,提问作者Cyrille Xavier Andre
相关产品推荐
相关产品推荐

