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
相关产品推荐
相关产品推荐

