簡體   English   中英

如何使用整數數組在Java中覆蓋toString?

[英]How can I override toString in java using an integer array?

我需要按以下順序示例打印數組:[1、2、3、4],但是我不知道該怎么做。 我開始是這樣的:

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

但是我只打印了第一個元素,如[1,]。 你能幫助我嗎?

調用Arrays.toString(a)

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

輸出量

[1, 2, 3, 4]

不要單次迭代返回。 您必須為所有迭代構建字符串,然后從那里返回。

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

代碼的問題是您要在第一次循環迭代中返回。

還有其他更好,更清潔的方法,例如使用:

Arrays.toString(array)

因此,您可以擁有:

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

該語句還產生所需的輸出

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

在循環中構建字符串,但是在處理完所有元素之前不要返回:

@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比普通的字符串連接更可取,因為這樣可以更有效地積累許多字符串。

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

我們在循環過程中構建字符串,並將下一個數字附加到前一個字符串,直到結尾。 然后我們打印完整的字符串! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM