Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 将数组中的字符串转换为二维数组中的单词_Java - Fatal编程技术网

Java 将数组中的字符串转换为二维数组中的单词

Java 将数组中的字符串转换为二维数组中的单词,java,Java,我有一个在屏幕上显示歌词的程序。每行歌词都存储在一个数组中。现在,我想创建一个2d数组,其中只包含按如下方式排列的单个单词: String[] lyrics = {"Line number one", "Line number two"}; String[][] words = {{"Line","number","one"},{"Line", "number", "two"}}; 我认为它只是一个简单的双for循环,只需要获取当前字符串,去掉空格,并在数组中存储单词。但是,当我尝试此操作时,

我有一个在屏幕上显示歌词的程序。每行歌词都存储在一个数组中。现在,我想创建一个2d数组,其中只包含按如下方式排列的单个单词:

String[] lyrics = {"Line number one", "Line number two"};
String[][] words = {{"Line","number","one"},{"Line", "number", "two"}};
我认为它只是一个简单的双for循环,只需要获取当前字符串,去掉空格,并在数组中存储单词。但是,当我尝试此操作时,会出现类型不匹配

公共静态void createWordArray(){

for(int i=0;i不需要内部for循环

public class CreateWordArray {
    static String[]  lyrics = {"Line number one", "Line number two"}; 
    static String[][] words = new String[lyrics.length][];

    public static void createWordArray() {
        for(int i=0; i<lyrics.length; i++) {
                words[i] = lyrics[i].split("\\s+");
        }
    }

   public static void main(String[] s) {

       createWordArray();
       System.out.println(Arrays.deepToString(words));

   }
}
公共类CreateWordArray{
静态字符串[]歌词={“第1行”,“第2行”};
静态字符串[][]单词=新字符串[歌词.长度][];
公共静态void createWordArray(){

对于(inti=0;i您可以使用List,它非常动态且易于控制

    String[] lyrics = {"Line number one", "Line number two"};

    //Create a List that will hold the final result
    List<List<String>> wordsList = new ArrayList<List<String>>();

    //Convert the array of String into List
    List<String> lyricsList = Arrays.asList(lyrics);

    //Loop over the converted array
    for(String s : lyricsList )
    {
        //Split your string
        //convert it to a list
        //add the list into the final result
        wordsList.add(Arrays.asList(s.split("\\s+")));
    }

        //System.out.println(wordsList.toString());
String[]歌词={“第一行”、“第二行”};
//创建一个包含最终结果的列表
List wordsList=new ArrayList();
//将字符串数组转换为列表
List-lyricsList=Arrays.asList(歌词);
//在转换的数组上循环
用于(字符串s:lyricsList)
{
//分开你的绳子
//将其转换为列表
//将列表添加到最终结果中
wordsList.add(Arrays.asList(s.split(\\s+)));
}
//System.out.println(wordsList.toString());

下面是一个使用流的示例解决方案

public class WordArrayUsingStreams {
    public static void main(String[] args) {
        String[] lyrics = {"Line number one", "Line number two"};

        String[][] words = Arrays.stream(lyrics)
              .map(x -> x.split("\\s+"))
              .toArray(String[][]::new);

        System.out.println(Arrays.deepToString(words));
    }
}
输出:

[[Line, number, one], [Line, number, two]]

2D字符串数组可能不是最好的解决方案,如果每行有不同的单词数:数组中的每个元素必须具有相同的长度。考虑一个列表,其中每个内部元素是一个单词,每个外部元素是一行上的单词列表。对于循环:)