将所有可能的子字符串存储在String []中

时间:2014-02-27 08:27:09

标签: java string substring

我想在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]);           
        }            
    }          
}             

什么是解决方案?

1 个答案:

答案 0 :(得分:3)

  

错误是:找不到符号,变量str,loction:class substring

那么,相当清楚地告诉你错误是什么:你还没有声明str。您声明Str,但Java的标识符区分大小写,strStr不是相同的标识符。

所以改变

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)