【问题标题】:How can I override toString in java using an integer array?java - 如何使用整数数组覆盖java中的toString?
【发布时间】:2015-10-09 22:50:23
【问题描述】:

我需要按以下顺序打印数组示例:[1, 2, 3, 4],但我不知道该怎么做。我是这样开始的:

 for (int i = 0; i < a.length - 1; i++) {
        return "[" + a[i] + ", "+ "]";
    }
return null;

但我只打印了第一个元素,如 [1, ]。你能帮帮我吗?

【问题讨论】:

  • 你不应该从循环内部返回:你需要建立toString,然后在循环之后返回它。

标签: java arrays oop


【解决方案1】:

致电Arrays.toString(a):

int[] a = {1,2,3,4};
System.out.println(Arrays.toString(a));

输出

[1, 2, 3, 4]

【讨论】:

  • 在给他内置方法之前最好更正当前的OP代码:)
【解决方案2】:

不要单次迭代返回。您必须为所有迭代构建字符串,然后从那里返回。

        StringBuilder builder = new StringBuilder();
        builder.append("[");
        for (int i = 0; i < a.length - 1; i++) {
            builder.append(a[i]).append(",");
        }
        builder.append("]");
        if (builder.length() > 1)
        builder.setLength(builder.length() - 1);
        return result;

您似乎正在学习数组和循环。

如果您想使用任何内置方法来完成这项工作,请使用Arrays.toString(a);

【讨论】:

  • 这太过分了。改为截断构建器:if (builder.length() != 0) builder.setLength(builder.length() - 1)append("]") 之前。
  • @Andreas Hmm 在数组为空的情况下失败。但是Idea最好避免使用正则表达式:)
  • 失败怎么办? if 语句可以防止这种情况发生。
  • 我说之前 append("]"),否则你将删除]。 ;-)
【解决方案3】:

您的代码的问题是您在第一次循环迭代时返回。

还有其他更好、更简洁的方法,比如使用:

Arrays.toString(array)

所以,你可以:

@Override 
String toString() {
    return Arrays.toString(a);
}

【讨论】:

    【解决方案4】:

    此语句也产生所需的输出

    System.out.print(Arrays.asList(a));
    

    【讨论】:

      【解决方案5】:

      在循环中构建字符串,但在处理完所有元素之前不要返回:

      @Override String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < a.length - 1; ++i) {
          sb.append(a[i]);
          sb.append(", ");
        }
        if (a.length > 0) {
          sb.append(a[a.length - 1]);
        }
        sb.append("]");
        return sb.toString();
      }
      

      我假设你想追加数组中的所有元素,你不是故意排除最后一个。

      使用StringBuilder 比简单的字符串连接更可取,因为这样累积大量字符串更有效。

      【讨论】:

        【解决方案6】:
        public static void main(String[] args)
          {
            int[] a = {1,2,3,4};
            String res=null;
            int num;
            res = "[";
        
        
            for (int i = 0;  i < a.length;  i++) {
        
              num = a[i];
              res = res + num +",";
        
            }
            res = res + "]";
        System.out.println (res);
        }
        

        我们在循环期间构建字符串,将下一个数字附加到前一个字符串,直到结束。然后我们打印完整的字符串! :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-04
          • 2012-05-30
          • 1970-01-01
          相关资源
          最近更新 更多