我想在String []
中存储所有可能的子字符串。我尝试了这个,但收到了一个错误:
public void sub(String word){
String [] Str=new String[100];
int n=0;
for (int from = 0; from < word.length(); from++) {
for (int to = from + 1; to <= word.length(); to++) {
str[n]=word.substring(from, to);
n++;
System.out.println(str[n]);
}
}
}
什么是解决方案?
答案 0 :(得分:3)
错误是:找不到符号,变量str,loction:class substring
那么,相当清楚地告诉你错误是什么:你还没有声明str
。您已声明Str
,但Java的标识符区分大小写,str
和Str
不是相同的标识符。
所以改变
String [] Str=new String[100];
到
String [] str=new String[100];
// ^--- lower case
之前,当你没有说出错误是什么时,还有其他一些事情Pshemo和我(以及其他人)注意到了:
这里有序列问题:
str[n]=word.substring(from, to);
n++;
System.out.println(str[n]);
...因为您在输出字符串之前递增n
,所以您总是要输出null
。只需移动增量修复:
str[n]=word.substring(from, to);
System.out.println(str[n]);
n++;
对于较长的单词,可能会出现另一个可能的问题,其中子串的数量可能超过100.在这种情况下,您应该避免创建固定大小的数组,但尝试使用动态大小集合,如List
List<String> str = new ArrayList<String>();
要在此处放置或阅读元素,只需使用str.add(substring)
和str.get(index)
。