1

好的,我的课堂作业是编写代码来生成用户名。但是,它不能超过姓氏的 7 个字母。如果姓氏中的字母少于 7 个,则将使用所有字母。但是教授说没有 if 语句。有任何想法吗 ?我写的那个适用于 7 个或更多字母的名字,但发送短姓氏错误。这里是:

    //find first initial of firstName
    char firstInitial = firstName.charAt(0);

    //limit last name in userName to 7 characters
    String shortLastName = lastName.substring(0, 7);

    //create a username using the first letter of firstName and lastName (but no more than 7 letters)
    String userName = (firstInitial + shortLastName);

    //print username in lowercase
    System.out.println((firstName + " " + lastName + "'s standard username is:" + userName).toLowerCase())

真的只需要一个关于如何进行的想法。可能是一个例子。我已经放弃了....

4

5 回答 5

3

使用Mathmin函数来决定是应该使用完整的姓氏还是只使用前 7 个字符:

String username = firstName.charAt(0) + lastName.substring(0, Math.min(7, lastName.length()));
于 2013-09-17T20:02:14.660 回答
2

您可以使用三元运算符(基本上只是一个if语句):

String shortened = name.length() > 7 ? name.substring(0, 7) : name;

[编辑] 对您的编辑“仅字符串和数学”;您还可以使用Math.min最大/实际字符串长度。

于 2013-09-17T19:58:07.693 回答
0

您可以使用java.lang.Math#min(int, int)实现此目的

//limit last name in userName to 7 characters
String shortLastName = lastName.substring(0, Math.min(7, lastName.length()));
于 2013-09-17T20:02:41.547 回答
0

你可以捕捉到它抛出的错误。

String shortLastName;
try
{
   shortLastName = lastName.substring(0, 7);
}
   catch(IndexOutOfBoundsException e) // If this is the error, I'm not positive on that
{
   shortLastName = lastName;
}

但是使用 Min 更优雅。

于 2013-09-17T20:05:08.593 回答
0

如果您根本不想使用任何比较,这就是方法

    try {
        System.out.println(firstName.charAt(0) + lastName.substring(0, 7));
    } catch (StringIndexOutOfBoundsException e) {
        System.out.println(firstName.charAt(0) + lastName.substring(0, lastName.length()));
    }
于 2013-09-17T20:06:49.983 回答