簡體   English   中英

如何將字符串生成的子字符串存儲到字符串數組中?

[英]How can I store substrings generated from a String into a String array?

我正在編寫的程序是從給定的字符串(包括單詞本身)生成每個可能的子字符串,並將其存儲到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數組中的一個元素。

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

    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;
            }
    }

這樣嘗試

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);
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()]);
}

嘗試使用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);
}

}

希望對您有所幫助。

我將您的代碼簡化為這一代碼。 這可能會有所幫助。

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()]); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM