我写的程序是从给定的字符串(包括单词本身)生成每个可能的子字符串,并将它们存储到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 :(得分: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()]);