【问题标题】:adding to String array from start position in different array (java)从不同数组的起始位置添加到字符串数组(java)
【发布时间】:2022-01-24 03:39:17
【问题描述】:

我正在尝试使用方法中给出的参数开始输出一个数组。基本上打印的结果应该是;

{"sat", "on"}
{"the", "mat"}
{"sat", "on", "the"}

但我很难理解为什么我得到的输出是:

[Ljava.lang.String;@57829d67

因为它看起来应该可以工作。

public static void main(String[] args) {
    String[] data = {"the", "cat", "sat", "on", "the", "mat"};
    System.out.println(pagedData(data, 2, 2));
    System.out.println(pagedData(data, 4, 4));
    System.out.println(pagedData(data, 2, 3));
}
public static String[] pagedData (String[] list, int start, int end){
    String[] output = new String[end];
    int x = 0;
    for (int i = 0; i < end; i++) {
        output[x] = list[start];
        x++;
    }
    return output;
}

【问题讨论】:

标签: java arrays string


【解决方案1】:

因为您要打印出数组本身。当一个数组被转换为一个字符串时(当你试图打印它时会发生这种情况),它会显示出混乱的状态(为了我们的目的,不需要解释)。您需要打印出数组的各个元素,例如:

 System.out.println(pagedData(data, 2, 2)[0]);

打印数组的第一个元素。

【讨论】:

    【解决方案2】:

    如果要打印数组中的所有元素,请使用Arrays.toString(_your_array_var); 方法。

    例如。

    System.out.println(Arrays.toString(pagedData(data, 2, 2)));
    

    否则,如果您想打印数组中的每个元素,请使用 for 循环或增强的 for 循环并打印每个元素,并在一行中用空格分隔。

    String[] array_A = pagedData(data, 2, 2);
    for (String s: array_A) {
    System.out.print(s + "\n");
    }
    

    【讨论】:

      【解决方案3】:

      完成任务花了大约 16 个小时,在遇到其中大约 10 次 IndexArrayOutOfBoundsExceptions 之后,我终于想到使用 if 语句来确定要运行多少次迭代才能解决它。

      问题和答案之间的主要区别在于 if 语句将 int(迭代)设置为计算值,以便在使用的 fori 循环中使用。

      public static String[] pagedData (String[] list, int start, int end){
          ArrayList<String> fullList = new ArrayList<>();
          ArrayList<String> cList = new ArrayList<>();
          int dif = list.length-end;
          int its = 0;
          if (start+end > list.length){
              its = dif;
          } else {
              its = end;
          }
          for (int i = 0; i < list.length; i++) {
              fullList.add(i, list[i]);
          }
          for (int i = 0; i < its; i++) {
              cList.add(i, fullList.get(start + i));
          }
          String[] output = new String[cList.size()];
          for (int i = 0; i < cList.size(); i++) {
              output[i] = cList.get(i);
          }
          return output;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多