2014-08-29 130 views
0

我寫的程序是從給定的字符串(包括詞本身)每一個可能的子串和這些存儲到一個String陣列如何將字符串生成的子串存儲到字符串數組中?

這是我的代碼:

String word = "WOMAN"; 
String[] res = new String[20]; 
String sub; 
int i, j, k; 
int len = word.length(); 
for(i = 0; i < len; i++) 
{ 
    for(j = 0; j <= len-i; j++) 
    { 
     sub = word.substring(i, i+j); 
     for(k = 0; k < res.length; k++) 
      res[k] = sub; 
    } 
} 

我得到一個錯誤,說 - error: incompatible types: String[] cannot be converted to String。我究竟做錯了什麼?!我想將每個子字符串存儲爲res數組中的一個元素。

+0

你想用你的功能實現什麼?也許有一個更短的方式 – 2014-08-29 10:18:01

+0

我想將它們存儲在數組中的原因是,我可以訪問任何子字符串。說,我想從「女人」搜索單詞「男人」 – 2014-08-29 10:20:03

+0

@KrithikaR String.contains? String.indexOf()...請閱讀String庫,然後提出問題。這裏是你的答案:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html – zubergu 2014-08-29 10:21:45

回答

0
public static String[] getSubStrings(String string){ 
     List<String> result = new ArrayList<String>(); 
     int i, c, length; 
     length = string.length(); 
     for(c = 0 ; c < length ; c++) 
     { 
     for(i = 1 ; i <= length - c ; i++) 
     { 
      result.add(string.substring(c, c+i)); 
     } 
     } 
     return result.toArray(new String[result.size()]); 
} 
-1

我簡化你的代碼這一點。這可能有幫助。

String str = "WOMAN"; 

List<String> tempArr = new ArrayList<String>(); 

for (int i = 1; i < str.length(); i++) { 
    for (int j = i; j <= str.length(); j++) { 
     tempArr.add(str.substring(i - 1, j)); 
    } 
} 

String[] res = tempArr.toArray(new String[tempArr.size()]); 
+0

爲一個字符串ab它只給出一個ab,但它應該給a,b,ab – coder101 2015-05-15 14:49:45

0

我變化不大,也許一些幫助

String word = "WOMAN"; 
    String[] res = new String[20]; 
    String sub; 
    int i, j, k=0; 
    int len = word.length(); 
    for(i = 0;i < len;i++) 
    { 
      for(j = 0;j <= len-i;j++,k++) 
      { 
       sub = word.substring(i, i+j); 
       //for(k = 0;k < res.length;k++) 
        res[k] = sub; 
      } 
    } 
+0

謝謝!這個小改變完全奏效! – 2014-08-29 10:40:53

0

嘗試這種方式

String word = "WOMAN"; 
String sub = ""; 
int len = word.length(); 
List list = new ArrayList(); 
for(int i = 0; i < len; i++) 
{ 
    for(int j = 1; j <=len-i; j++) 
    { 
     sub = word.substring(i, i+j); 
     list.add(sub); 
    } 

} 
System.out.println(list); 
0

嘗試到位陣列的使用ArrayList的。數組大小是固定的。如果子字符串大小小於數組,那麼生成的子字符串有時可能會溢出,或者某些空格保持空白。數組列表隨着大小的增加而動態增長。

與數組列表,一個簡單的解決辦法是:

公共類GenerateStrings {

/** 
* Generate substrings of a given string and add them in an arraylist. 
*/ 
public static void main(String[] args) { 
    ArrayList<String> aList=new ArrayList<String>(); 
    Scanner sc = new Scanner(System.in); 
    System.out.println("enter the string to split"); 
    String string=sc.nextLine(); 
    for(int i=0;i<string.length();i++){ 
     for(int j=1;j<=string.length()-i;j++){ 
      String subString=string.substring(i, i+j); 
      aList.add(subString); 

     } 
    } 
    System.out.println(aList); 
} 

}

我希望它能幫助。