如何将String生成的子串存储到String数组中?

时间:2014-08-29 10:16:46

标签: java arrays string substring

我写的程序是从给定的字符串(包括单词本身)生成每个可能的子字符串,并将它们存储到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数组中的元素。

5 个答案:

答案 0 :(得分: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;
            }
    }

答案 1 :(得分: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);

答案 2 :(得分: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()]);
}

答案 3 :(得分:0)

尝试使用ArrayList代替数组。数组大小是固定的。因此,如果子字符串大小小于数组,则生成的子字符串有时会溢出或某些空格保持为空。数组列表随着大小的增加而动态增长。

使用Array列表,一个简单的解决方案是:

公共类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);
}

}

我希望它有所帮助。

答案 4 :(得分:-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()]); 
相关问题