在将“ Hello”作为我的字符串时,我的输出是“ He”。将“ He”写为我的字符串时,输出也为“ He”。我添加了一段代码,指出当字符串大于一个字符时,它应该只打印字符本身。
这似乎很基本,但是当只给一个字符(例如“ H”)作为字符串时,我不知何故出现了错误。它说:String index out of range: 2
。
public static void main(String[] args) {
String s = "o";
String s1 = s.substring(0,2);
if (s.length() >= 1 )
{
System.out.println(s);
}
else
{
System.out.println(s1);
}
}
}
答案 0 :(得分:11)
替代:
s.substring(0, Math.min(2, s.length()))
答案 1 :(得分:3)
您需要在致电String.substring()
之前进行检查。您可以使用三元运算符? :
来简化代码:
String s = "a"
String o = s.substring(0, s.length() > 2 ? 2 : s.length());
System.out.println(o); // a
答案 2 :(得分:2)
当字符串仅包含一个字符时,您仍然运行String s1 = s.substring(0,2);
,它将尝试访问第二个字符,并且会出现超出范围的异常。
您可以将代码编写为:
String s = "o";
String s1 = s;
if (s.length() > 2) {
s1 = s.substring(0,2);
}
System.out.println(s1);
这样,只有当s
的字符数超过2个时,您才创建它的子字符串。
答案 3 :(得分:1)
请检查以下代码
class test {
public static void main(String[] args) {
String s = "o";
if (s.length() <= 1) {
System.out.println(s);
} else {
String s1 = s.substring(0, 2);
System.out.println(s1);
}
}
}
我们不能有一个长度大于提供的字符串长度的子字符串,因此会出现这些错误。