如何使用整数数组覆盖java中的toString?

时间:2015-10-09 22:50:24

标签: java arrays oop

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

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

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

6 个答案:

答案 0 :(得分:3)

致电Arrays.toString(a)

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

输出

[1, 2, 3, 4]

答案 1 :(得分: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);

答案 2 :(得分:1)

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

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

Arrays.toString(array)

所以,你可以:

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

答案 3 :(得分:1)

此语句还会生成所需的输出

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

答案 4 :(得分:0)

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

@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比纯字符串连接更可取,因为以这种方式累积大量字符串会更有效。

答案 5 :(得分:0)

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

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