我正在制作一个 if 条件来测试给定的字符串末尾是否包含“我”。
Given Return
----- ------
Lame True
Meant False
Come True
etc
现在,如果字符串长度超过 2 个字符,我的代码可以完美运行。
public boolean containsLy(String input) {
String ly = "ly";
String lastString = input.substring(input.length() - 2);
if (input.length() < 2) {
return false;
}else if (lastString.equals(ly)) {
return true;
}else
return false;
}
但是每当字符串有 2 个或更少的字符时,我就会收到此错误:
StringIndexOutOfBoundsException
这显然是因为负数,但我想不出解决方法。
最佳答案
如果要返回false
如果length
输入低于 2,您可以在尝试执行 substring
之前进行检查对您的输入进行操作。
public boolean containsLy(String input) {
if (input == null || input.length() < 2) {
return false;
}
else {
String ly = "ly";
String lastString = input.substring(input.length() - 2);
if (lastString.equals(ly)) {
return true;
}
else {
return false;
}
}
}
或者更简单:
public boolean containsLy(String input) {
if (input == null || input.length() < 2) {
return false;
}
else {
String ly = "ly";
String lastString = input.substring(input.length() - 2);
return lastString.equals(ly);
}
}
或者,摆脱所有 if/else 变量的东西(感谢@Ingo):
public boolean containsLy(String input) {
return input != null
&& input.length() >= 2
&& input.substring(input.length() - 2).equals("ly");
}
关于java - 测试某些字符时出现 StringIndexOutOfBoundsException 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972744/