【问题标题】:String.split Array into another 2D String ArrayString.split 数组到另一个二维字符串数组
【发布时间】:2018-04-09 09:05:36
【问题描述】:

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

数组内容:

[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";

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

代码:

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"

【问题讨论】:

    标签: java arrays string split


    【解决方案1】:

    你必须使用:

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

    而不是:

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

    为什么!

    因为string[i].split("-") 返回一个数组而不是单个字符串,如果是数组的数组部分。


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

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

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

    【讨论】:

    • @OliverTworkowski 因为你没有初始化数组检查我的编辑!
    【解决方案2】:

    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];
        }
    }
    

    【讨论】:

    • 嘿,这也给了我二维数组行中的空指针异常
    【解决方案3】:

    你得到一个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("-");
        }
      }
    

    【讨论】:

      【解决方案4】:
      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”回答的问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-12
        • 2019-09-14
        • 2022-12-07
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2019-08-07
        相关资源
        最近更新 更多