我正在做这个项目的帮助。它要求我,“提示并读取用户的名字和姓氏(单独)。然后打印一个由用户名字的第一个字母组成的字符串,后跟用户姓氏的前五个字符。假设姓氏至少五个字母“。 如何纠正错误并为测试1获得所需的输出?另外,我做错了什么?Test 1 Desired output[Test 2 desired output] 1输出
class CreateID {
public static void main(String[] args) {
// TODO Auto-generated method stub
String id=("Clare");
String Ids1, Ids2, Ids3;
Ids1=id.concat(" Johnson");
System.out.println(Ids1);
Ids2=id.substring(0,6-10);
}
}
答案 0 :(得分:1)
首先,获取用户的名字和姓氏。您可以使用java.util.Scanner
类轻松完成。
假设名字和姓氏存储在String
变量firstName
和lastName
中,请使用firstName.substring(0, 1)
获取名字中的第一个字符。要获取用户姓氏的前五个字符,请使用lastName.substring(0, 5)
最终结果将是这些结果的连接,可以使用+
运算符获得。
答案 1 :(得分:0)
String是不可变类。因此,每次返回新的String对象时都使用String
方法。
所以不使用id.substring(..),而是使用IDs1.substring(..)然后你就不会得到StringIndexOutOfBound Exception
答案 2 :(得分:0)
为了解释你所看到的异常,它是由这一行引起的:
Ids2=id.substring(0,6-10);
评估为
Ids2=id.substring(0,-4);
因为它将6-10计算为算术运算,即-4。 java中的索引从零开始增加,因此它们必须是0或正数。有关substring。
的详细信息,请参阅文档