【问题标题】:Adding string arrays to a 2d String array through iteration通过迭代将字符串数组添加到二维字符串数组
【发布时间】:2016-07-20 15:45:52
【问题描述】:

我正在尝试创建一个数组,该数组包含通过对通过循环输入的字符串使用 String.split() 方法创建的字符串数组。

int N = in.nextInt();
String [][] defibDetails = new String[N][];
in.nextLine();
for (int i = 0; i < N; i++) {
    String DEFIB = in.nextLine();
    String [] details = DEFIB.split(";");
    defibDetails[i][]=details;
}
System.out.println(defibDetails[0][0]);

我希望 System.out 在第一个 ; 之前成为 DEFIB 的子字符串,其中循环计数器 i = 0。感谢您的任何想法。

【问题讨论】:

  • 您知道总输入的大小吗?字符串数组需要被赋予预定的大小。你有没有想过使用列表。 List> details = new ArrayList();代码中的“in”对象是 Scanner 类吗?
  • 阅读你从编译器得到的错误信息,修复错误(它应该是defibDetails[i] = details;,你会得到预期的行为。你不能指望一个程序做某事,如果它没有甚至都不编译。
  • 不幸的是,长度各不相同。我对使用任何形式的集合持开放态度,但对 Java 来说还是很陌生,并且不知道给定应用程序的最佳选择。查看列表但无法计算出获取值的 2d 语法。会是list.get(0).list.get(0) 吗?
  • nizet 代码实际上是针对二维数组的,所以我不认为我想这样做,除非您可以详细说明原因?
  • 没有。 list.get(0) 返回一个 List。您可以在 List 上调用 get(0) 以获取其第一个元素。所以它是 list.get(0).get(0)。但是您可以使用两条指令使其更清晰: List firstList = list.get(0); String firstString = firstList.get(0);

标签: java arrays string multidimensional-array


【解决方案1】:

错误在这里:defibDetails[i][];应该是这样的:defibDetails[i] 你有一个二维数组,所以第一个维度是“数组数组”的特定数组。其次是这个数组的特定元素。 所以defibDetails[i] 表示数组#i,defibDetails[i][j] 表示数组i 中的元素j。

int N = in.nextInt();
String [][] defibDetails = new String[N][];
in.nextLine();
for (int i = 0; i < N; i++) {
    String DEFIB = in.nextLine();
    String [] details = DEFIB.split(";");
    defibDetails[i]=details; // <<<<<<<<
}
System.out.println(defibDetails[0][0]);

http://ideone.com/Dr9Aci

【讨论】:

  • 谢谢。认为既然是 2d 就需要使用常量 2d 表示法。已解决问题。
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 2019-09-14
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2019-06-10
相关资源
最近更新 更多