我正在制作一个if条件来测试,看看给定的字符串是否包含“me”。
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
这显然是因为数字为负数,但我想不出有解决办法。
答案 0 :(得分:4)
如果您想在输入的false
低于2时返回length
,则可以在尝试对输入执行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");
}
答案 1 :(得分:2)
如此检查
boolean endsWithMe = "myteststring".endsWith("me");
如果您正在练习,那么:
伪代码:
if length of the given string < 2 then return false
else substring from index length - 2 to length equals "me"
答案 2 :(得分:0)
不要重新发明轮子。只需使用String#endsWith()
顺便说一句,值得注意的是,你已经发现为什么它没有像你那样工作。但是,你仍然首先尝试获取子字符串,然后才测试它是否可能。为什么呢?
答案 3 :(得分:0)
变通方法很简单..在执行子字符串之前检查字符串长度,或使用indexOf("me")
获取索引并使用长度来查看它是否位于length-2
位置。< / p>