String.split Array转换为另一个2D String Array

时间:2018-04-09 09:05:37

标签: java arrays string split

我正在尝试使用.split()将字符串数组转换为另一个2D字符串数组,以便2D数组的每一行都填充其中一个拆分部分。我要拆分的数组应分为以下三部分:

数组的内容:

[0]= "25-Mar-18", [1]= "20-Dec-18",[2]= "1-Jan-15";

它在2D数组中应该是什么样子:

row [0] [0]= "25", [1]= "Mar", [2]= "18";
row [1] [0]= "20", [1]= "Dec", [2]= "18";
row [2] [0]= "1",  [1]= "Jan", [2]= "15";

你明白了......这是我的代码。我的问题是:甚至可以将带有.split的数组存储到2D数组中吗?

代码:

String[] string = {"25-Mar-18", "20-Dec-18", "1-Jan-15"};
String[] [] parts;

void draw(){
  for(int i=0; i<string.length;i++){
    for(int j=0; j<3;j++){
      parts[i] [j] = string[i].split("-");
    }
  }
  printArray(parts);
}

错误:

Error: Type mismatch, "java.lang.String[]" does not match with "java.lang.String"

4 个答案:

答案 0 :(得分:1)

你必须使用:

parts[i] = string[i].split("-");

而不是:

parts[i][j] = string[i].split("-");

为什么!

因为string[i].split("-")返回一个数组而不是一个String,而部分是一个数组。

  

现在它给了我一个NullPointerException ...

因为您没有初始化数组String[] [] parts;来解决您可以使用的问题:

parts = new String[string.length][];

答案 1 :(得分:1)

String.split(“ - ”)方法返回一个字符串数组。例如:如果“25-Nar-18”则{[“25”],[“Mar”],[“18”]}

所以你的代码应该更正为

for(int i=0; i<string.length;i++){
    String[] temp = string[i].split("-");
    for(int j=0; j<3;j++){
      parts[i] [j] = temp[j];
    }
}

答案 2 :(得分:0)

您正在获得nullPointerException,因为您尚未初始化阵列。做

  String[] string = {"25-Mar-18", "20-Dec-18", "1-Jan-15"};
  String[][] parts = new String[3][3];

  void draw() {
    for(int i = 0; i < string.length; i++){
      parts[i] = string[i].split("-");
    }
  }

答案 3 :(得分:0)

String[] string = {"25-Mar-18", "20-Dec-18", "1-Jan-15"};
String[] [] parts=new String[string.length][];

void setup(){
  for(int i=0; i<string.length;i++){
    parts[i]=string[i].split("-");
  }
  printArray(parts[0]);
}

由YCF_L&#39;

提供的问题