arraylist< string>无法转换为string[]错误

kuuvgm7e  于 2021-07-06  发布在  Java
关注(0)|答案(4)|浏览(563)

这个问题在这里已经有答案了

在java中将“arraylist转换为“string[]”(16个答案)
上个月关门了。
创建一个函数,该函数接受一个字符串数组并返回一个仅包含其中包含数字的字符串的数组。如果没有包含数字的字符串,则返回空数组。
示例numinstr([“1a”,“a”,“2b”,“b”])➞ ["1a“,”2b“]
努明斯特([“”,“10”])➞ ["10“]
努明斯特([“”,“ab10c”,“a10bc”,“bcd”])➞ ["ab10c“,”a10bc“]
numinstr([“这是一个测试”,“测试1”])➞ ["测试1“]
这是我的密码

import java.util.ArrayList;
public class Challenge {
    public static String[] numInStr(String[] arr) {
        boolean addWord = false;
        ArrayList<String> output = new ArrayList<String>();
        for (String word: arr){
            for (int i =0; i<word.length(); i++){
                if (Character.isDigit(word.charAt(i))){
                    addWord = true;
                }
        }
        if (addWord) {
                        output.add(word);
                        addWord=false;
        }
        return output;
    }
    }
}

怎么了?
为什么我要为arraylist设置一个类型?每当我这么做的时候,它就说它不安全。如何创建包含多个数据类型的arraylist?

noj0wjuj

noj0wjuj1#

导入java.util.*;
公共类arraylisttoarray{public static void main(string[]args){

/*ArrayList declaration and initialization*/
    ArrayList<String> arrlist= new ArrayList<String>();
    arrlist.add("String1");
    arrlist.add("String2");
    arrlist.add("String3");
    arrlist.add("String4");

    /*ArrayList to Array Conversion */
    String array[] = new String[arrlist.size()];              
    for(int j =0;j<arrlist.size();j++){
      array[j] = arrlist.get(j);
    }

    /*Displaying Array elements*/
    for(String k: array)
    {
        System.out.println(k);
    }
}

}

vltsax25

vltsax252#

不能返回不同的数据类型,ArrayList和arrays是不同的类型。使用
返回output.toarray(新字符串[0]);
首先将列表转换为数组

sbtkgmzw

sbtkgmzw3#

String[] 以及 ArrayList<String> 是不同的类型。必须更改方法的声明或将arraylist转换为array才能返回:

return output.toArray(new String[0]);

为什么我要为arraylist设置一个类型?
arraylist应该声明其元素的类型。对于包含任何元素的列表,请使用:

ArrayList<Object>
0qx6xfy6

0qx6xfy64#

返回值必须与返回类型匹配。因为您已将返回类型声明为 String[] ,必须返回 String[] 你可以通过返回 output.toArray(new String[0]) .
除此之外,您还可以使用java regex api以更简单、更干净的方式解决问题:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        // Test
        String[] arr = { "1a", "a", "2b", "b" };
        System.out.println(Arrays.toString(numInStr(arr)));
    }

    public static String[] numInStr(String[] arr) {
        Pattern pattern = Pattern.compile("\\d+");// One or more digits
        List<String> output = new ArrayList<>();
        for (String s : arr) {
            if (pattern.matcher(s).find()) {
                output.add(s);
            }
        }
        return output.toArray(new String[0]);
    }
}

输出:

[1a, 2b]

相关问题