2014-08-29 94 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); 
} 

}

我希望它能帮助。