【问题标题】:Split string to array filled with null [closed]将字符串拆分为用 null 填充的数组 [关闭]
【发布时间】:2014-08-14 09:07:26
【问题描述】:

我正在尝试做一个循环,将一个字符串拆分为字符串[]

sumc 是一个arraylist,它是一个全局变量 cind 和 dbind 是 String[] 也是全局变量

 for (int i = 0 ; i <= sumc.length - 1 ; i++){

        String local = sumc[i];

        System.out.println(local);

        String[] parts = local.split(":");
        System.out.println(parts[0]);
        System.out.println(parts[1]);
        cind = new String [sumc.length];
        dbind = new String [sumc.length];
        cind[i] = local.split(":")[0];
        dbind[i] = local.split(":")[1];

    }

    System.out.println(Arrays.toString(cind) + "\t");
    System.out.println(Arrays.toString(dbind) + "\t");

所以当我做这个打印时,我只得到 null,null,null,除了最后一个,它用数字填充

【问题讨论】:

  • 发布sumc的内容。此外,强烈建议在尝试访问之前检查parts 的长度。
  • 如果 sumc[i] 是一个数组列表,它必须是 sumc.get(i);
  • sumc 不能是数组列表,因为数组列表没有长度属性。他们只有一个size() 方法。此外,arraylist 不能与索引等数组一起使用,它们有一个 get() 方法用于此目的。
  • 问题在于数组的实例化。不在sumc
  • @AlexR - 是的,但问题中关于 sumc is an arraylist 的陈述在代码中是完全错误的。

标签: java arrays split


【解决方案1】:

您正在实例化 cinddbind 在循环中。这应该可以解决它:

cind = new String [sumc.length];
dbind = new String [sumc.length]; 
for (int i = 0 ; i <= sumc.length - 1 ; i++){

    String local = sumc[i];

    System.out.println(local);

    String[] parts = local.split(":");
    System.out.println(parts[0]);
    System.out.println(parts[1]);
    cind[i] = local.split(":")[0];
    dbind[i] = local.split(":")[1];

}

System.out.println(Arrays.toString(cind) + "\t");
System.out.println(Arrays.toString(dbind) + "\t");

将您的 Array sumc 转换为类似表格的结构的更简洁方法如下:

String[][] data = new String[sumc.length][2];
for (int i = 0; i < sumc.length; i++)
    data[i] = sumc[i].split(":");

分别通过data[i][0]data[i][1] 进行访问。

【讨论】:

  • 是的,我刚刚看到我的错误.. 但是谢谢!
  • @KlausJoeChristiansen 乐于助人。如果这回答了所有问题,请将问题标记为已回答。否则,请随时要求进一步解释。
  • 在时间限制之前做不到嘿嘿:) 所以只好等待
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多