You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java登录名生成实验:姓氏不足5字符时的字符串处理问题

问题解答

现有代码问题

你当前的代码首先有个小错误:substring(0,4) 实际是取前4个字符,不符合要求的「取姓氏前5个字母」的规则,而且当姓氏长度小于5时,调用substring会直接抛出StringIndexOutOfBoundsException异常。

实现方案

你可以用if语句实现,也可以用更简洁的无if写法,两种方式都符合需求:

方案1:使用if语句实现(逻辑直观易懂,适合初学者练习条件判断)

import java.util.Scanner;
public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        String userFirstName;
        String userLastName;
        int birthYear;
        String loginName;
        
        userFirstName = scnr.next();
        userLastName = scnr.next();
        birthYear = scnr.nextInt();
        
        String lastNamePart;
        // 判断姓氏长度是否>=5
        if (userLastName.length() >=5) {
            lastNamePart = userLastName.substring(0,5);
        } else {
            lastNamePart = userLastName;
        }
        loginName = lastNamePart + userFirstName.charAt(0);
        loginName = loginName + (birthYear % 100) ;
        System.out.println("Your login name: " + loginName);
    }
}

方案2:无需if语句的简洁实现

利用Math.min自动取适配的结束下标,一行就能处理姓氏长度不足的场景:

import java.util.Scanner;
public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        String userFirstName = scnr.next();
        String userLastName = scnr.next();
        int birthYear = scnr.nextInt();
        
        // 自动适配姓氏长度,不足5就取全部,够就取前5
        String lastNamePart = userLastName.substring(0, Math.min(userLastName.length(), 5));
        String loginName = lastNamePart + userFirstName.charAt(0) + (birthYear % 100);
        System.out.println("Your login name: " + loginName);
    }
}

内容的提问来源于stack exchange,提问作者Mandy0000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:27:02