Java Android上的数组到字符串

Java Android上的数组到字符串,java,android,arrays,string,compiler-errors,Java,Android,Arrays,String,Compiler Errors,我有一个字符串数组。我想将这个字符串数组与两个字符串进行比较,所以首先我将数组赋给变量,然后我将这个变量与字符串进行比较。如果数组转换为第一个字符串,则执行其他等于第二个字符串的操作。但它引发了无法解决方法字符串错误 String stopC = "stop"; //first strıng String fastC = "fast"; //second strıng String userC; switch (requestCode) { case REQ_CODE_SPE

我有一个字符串数组。我想将这个字符串数组与两个字符串进行比较,所以首先我将数组赋给变量,然后我将这个变量与字符串进行比较。如果数组转换为第一个字符串,则执行其他等于第二个字符串的操作。但它引发了
无法解决方法字符串
错误

String stopC = "stop";  //first strıng
String fastC = "fast";  //second strıng
String userC;   

switch (requestCode) {
    case REQ_CODE_SPEECH_INPUT: {
        if (resultCode == RESULT_OK && null != data) {
            /*strıng array*/            
            ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            userC = Arrays.toString(result); //array convert to strıng.gıves error here.

            if(userC.compareTo(fastC)==0){   //compare coverted array wth strıng
                exam.speedUpBall();
                Toast.makeText(this, "fast!! =)",
                        Toast.LENGTH_LONG).show();
            }

           else if (userC.compareTo(stopC)==0) {  
                exam.stop();
                Toast.makeText(this, "stop!! =)",
                        Toast.LENGTH_LONG).show();
            }

        }
        break;
    }
}
String stopC=“stop”//第一街
字符串fastC=“fast”//第二个strıng
字符串userC;
开关(请求代码){
案例请求代码语音输入:{
if(resultCode==RESULT\u OK&&null!=数据){
/*strıng数组*/
ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果);
userC=Arrays.toString(result);//此处数组转换为strıng.gıves错误。
if(userC.compareTo(fastC)==0){//compare隐蔽数组与strıng
考试。加速球();
Toast.makeText(这个“fast!!=”,
Toast.LENGTH_LONG).show();
}
如果(userC.compareTo(stopC)==0){
检查。停止();
Toast.makeText(这个“stop!!=)”,
Toast.LENGTH_LONG).show();
}
}
打破
}
}

方法不接受数组
List

您需要首先将列表转换为数组

ArrayList<String> result=new ArrayList<>();
String new_array=result.toArray().toString();
ArrayList结果=新建ArrayList();
字符串new_array=result.toArray().toString();
Java数组的
toString()
必须应用于
数组
,而不是
数组列表

因此,将
ArrayList
转换为
Array
,然后将
Array
转换为
String

试试这个代码-

userC = result.toArray().toString();
它将按预期工作:)

根据

因此,参数只能是
数组
,例如
char[]
boolean[]
int[]
等。
ArrayList
不是数组

如果您想将
数组列表
转换为
字符串
,您应该自己构建它。 例如:

ArrayList<String> resultArrayList =  data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String result = "";
for (String content: resultArrayList) {
    result += content;
}
ArrayList ResultaryList=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果);
字符串结果=”;
for(字符串内容:ResultaryList){
结果+=内容;
}
然后您将有一个可以比较的
字符串。
另外,请看一下SO中的这个主题


将ArrayList转换为字符串的另一种方法是使用:


错误可能是由非法参数引起的。用于指定
对象[]
参数的文档,而不是
数组列表
。也许你可以试试
Arrays.toString(result.toArray())
?你的数组中有什么数据?@JarrodRoberson,因为我可能只是个傻瓜:你能解释一下“Object[]->String”(OPs问题)和“Object[]->String[](复制)的相等性吗?所以你建议在数组上调用
toString
?您可能想尝试一下,看看您得到了什么。所以您建议在数组上调用
toString
?您可能想尝试一下,看看您得到了什么。谢谢,找到了另一种方法,字符串userC=TextUtils.join(“\t”,result)。İt轻松地将arraylist转换为strıng@busrao您可能希望添加此方法作为此问题的另一个答案。问题是,谢谢。请避免在您的答案中张贴类似“谢谢”的内容。我对你的答案稍加修改,以改进课文。
toString(boolean[] a)
Returns a string representation of the contents of the specified array.
ArrayList<String> resultArrayList =  data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String result = "";
for (String content: resultArrayList) {
    result += content;
}
userC = TextUtils.join("\t", result);