我创建了类Word。 Word有一个构造函数,它接受一个字符串参数和一个方法getSubstrings,它返回一个包含所有字的子串的字符串,按照长度排序。查找字符串的所有子字符串 - StringIndexOutOfBoundsException
例如,如果用户提供了输入“朗姆酒”,则该方法返回一个 串,将打印这样的:
r
u
m
ru
um
rum
我要连接的子串在一个字符串,将它们与分离换行符(“\ n”)。然后返回字符串。
代码:
public class Word {
String word;
public Word(String word) {
this.word = word;
}
/**
* Gets all the substrings of this Word.
* @return all substrings of this Word separated by newline
*/
public String getSubstrings()
{
String str = "";
int i, j;
for (i = 0; i < word.length(); i++) {
for (j = 0; j < word.length(); j++) {
str = word.substring(i, i + j);
str += "\n";
}
}
return str;
}
但它抛出异常:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
我停留在这一点上。也许,根据此方法签名public String getSubstrings()
,您还有其他建议。
如何解决这个问题?异常的
次,然后考虑使用String构造函数以及'substring()'方法,就像你的情况一样,'str = new String(word.substring(i,i + j));'。否则,它可能会在某个时间导致内存泄漏(是的,但它与具体问题无关)。 – Lion