Java 将数组中的字符串转换为二维数组中的单词
我有一个在屏幕上显示歌词的程序。每行歌词都存储在一个数组中。现在,我想创建一个2d数组,其中只包含按如下方式排列的单个单词:Java 将数组中的字符串转换为二维数组中的单词,java,Java,我有一个在屏幕上显示歌词的程序。每行歌词都存储在一个数组中。现在,我想创建一个2d数组,其中只包含按如下方式排列的单个单词: String[] lyrics = {"Line number one", "Line number two"}; String[][] words = {{"Line","number","one"},{"Line", "number", "two"}}; 我认为它只是一个简单的双for循环,只需要获取当前字符串,去掉空格,并在数组中存储单词。但是,当我尝试此操作时,
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字符串数组可能不是最好的解决方案,如果每行有不同的单词数:数组中的每个元素必须具有相同的长度。考虑一个列表,其中每个内部元素是一个单词,每个外部元素是一行上的单词列表。对于循环:)