Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList<;字符串>;始终生成字符[],而不是字符串。我怎样才能修好它?_Java_String_Arraylist - Fatal编程技术网

Java ArrayList<;字符串>;始终生成字符[],而不是字符串。我怎样才能修好它?

Java ArrayList<;字符串>;始终生成字符[],而不是字符串。我怎样才能修好它?,java,string,arraylist,Java,String,Arraylist,我想写一个方法,将字符串作为参数,并生成字符串的arraylist,这些字符串是给定字符串中包含的单词。例如,字符串“I go to Mars”应转换为Arraylist[“I”、“go”、“to”、“Mars”]。代码如下: static ArrayList getWords(String str){ ArrayList charArr=新的ArrayList(); ArrayList strArr=新的ArrayList(); char[]chArr=str.toCharArray(); f

我想写一个方法,将字符串作为参数,并生成字符串的arraylist,这些字符串是给定字符串中包含的单词。例如,字符串“I go to Mars”应转换为Arraylist[“I”、“go”、“to”、“Mars”]。代码如下:

static ArrayList getWords(String str){
ArrayList charArr=新的ArrayList();
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
for(字符i:chArr){
如果(((int)i)!=32){
添加(i);
}
否则{
strArr.add(charArr.toString());
charArr.clear();
}
}
如果(!charArr.isEmpty())strArr.add(charArr.toString());
返回斯特拉尔;
}
问题是,我得到的不是所需的字符串数组,而是一个字符数组。 预期产出:

[“我”、“去”、“去”、“火星”]

实际产量:

[I],[g,o],[t,o],[M,a,r,s]

我也无法将这些字符数组转换为字符串,我试图通过

String String=新字符串(getWords(str).get(1));

我怎样才能解决这个问题?最好使用getWords方法。

这可以通过
String.split()
方法轻松完成:

public static List<String> getWords(String str){
    String[] strArray=str.split(" "); 
    List<String> listStr = new ArrayList<String>();
    for(String strInArray : strArray){
          listStr.add(strInArray);
    }

    return listStr;
}
公共静态列表getWords(String str){
字符串[]strArray=str.split(“”);
List listStr=new ArrayList();
用于(字符串strInArray:strArray){
listStr.add(strInArray);
}
返回listStr;
}

以下是Geeksforgeks网站,该网站通过示例详细解释了
split
方法。

使用
String.split()
方法可以很容易地做到这一点:

public static List<String> getWords(String str){
    String[] strArray=str.split(" "); 
    List<String> listStr = new ArrayList<String>();
    for(String strInArray : strArray){
          listStr.add(strInArray);
    }

    return listStr;
}
公共静态列表getWords(String str){
字符串[]strArray=str.split(“”);
List listStr=new ArrayList();
用于(字符串strInArray:strArray){
listStr.add(strInArray);
}
返回listStr;
}

以下是Geeksforgeks网站,该网站通过示例解释了有关拆分方法的更多信息。

这可以通过如下更改方法实现:

static List<String> getWords(String str){
    String[] splitValue = str.split(" ");
    return Arrays.asList(splitValue);
}

这可以通过如下更改您的方法来实现

static List<String> getWords(String str){
    String[] splitValue = str.split(" ");
    return Arrays.asList(splitValue);
}

您的代码生成的字符串是
ArrayList
的字符串版本,因为您使用的是它的。这不会将字符转换为字符串,而是返回列表的字符串表示形式

当然,你可以,但我想这是一种锻炼

如果要将
数组列表
转换为
字符串
,这是因为列表包含
字符
对象,而不是
字符
对象。您最好只使用
chArr
和索引,根本不需要
ArrayList

static ArrayList<String> getWords(String str){
    ArrayList<String> strArr = new ArrayList<String>();
    char[] chArr = str.toCharArray();
    int lastIndex = 0;
    for (int i = 0; i <= chArr.length; ++i) {
    //                ^^---- Note the unusual end condition
        if (i == chArr.length || chArr[i] == ' ') {
    //      ^^^^^^^^^^^^^^^^^--- note the test to avoid doing `chArr[i]` when past the end
            strArr.add(new String(chArr, lastIndex, i - lastIndex));
            lastIndex = i + 1;
        }
    }
    return strArr;
}
static ArrayList getWords(String str){
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
int lastIndex=0;

对于(int i=0;i您的代码生成的字符串是
ArrayList
的字符串版本,因为您使用的是its。这不会将字符转换为字符串,而是返回列表的字符串表示形式

当然,你可以,但我想这是一种锻炼

如果您想将
ArrayList
转换为
String
,这是因为列表包含
Character
对象,而不是
char
s。您最好只使用
chArr
和索引,根本不需要
ArrayList

static ArrayList<String> getWords(String str){
    ArrayList<String> strArr = new ArrayList<String>();
    char[] chArr = str.toCharArray();
    int lastIndex = 0;
    for (int i = 0; i <= chArr.length; ++i) {
    //                ^^---- Note the unusual end condition
        if (i == chArr.length || chArr[i] == ' ') {
    //      ^^^^^^^^^^^^^^^^^--- note the test to avoid doing `chArr[i]` when past the end
            strArr.add(new String(chArr, lastIndex, i - lastIndex));
            lastIndex = i + 1;
        }
    }
    return strArr;
}
static ArrayList getWords(String str){
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
int lastIndex=0;

对于(int i=0;i),该代码清楚地创建了
String
s的
ArrayList
,而不是
char[]的
ArrayList
()是什么让你认为它做了后者?代码没有做你所说的你希望它做的事情,但它没有产生错误的数据类型。要回答你的问题,请阅读List.toString()的javadoc。它不会连接它包含的所有字符以返回字符串。它生成的字符串是
ArrayList
的字符串版本,因为您使用它的
toString
。这不会将字符转换为字符串,而是返回列表的字符串表示形式。该代码显然创建了
ArrayList
对于
String
s,而不是
char[]
ArrayList
(),是什么让你认为它做了后者?代码没有做你所说的你想让它做的,但它不会产生错误的数据类型。要回答你的问题,请阅读List.toString()的javadoc。它不会连接它包含的所有字符以返回字符串。它生成的字符串是
ArrayList
的字符串版本,因为您正在使用它的
toString
。如果不将字符转换为字符串,它将返回列表的字符串表示形式。