连接输出问题(toString数组) - java

时间:2010-06-11 16:09:51

标签: java

我试图将输出显示为“1(10)2(23)3(29)”,而是输出为“1 2 3(10)(23)(29)”。如果有人可以查看代码并可能帮助我,我将不胜感激。我不想使用arraylist。

代码

// int[] Groups = {10, 23, 29}; in the constructor

public String toString()
{
    String tempStringB = "";
    String tempStringA = " ";
    String tempStringC = " ";

    for (int x = 1; x<=3; x+=1)
    {
       tempStringB = tempStringB + x + " ";
    }

    for(int i = 0; i < Group.length;i++)
    {
        tempStringA = tempStringA + "(" + Groups[i] + ")";
    }
    tempStringC = tempStringB + tempStringA;

    return tempStringC;
} 

2 个答案:

答案 0 :(得分:2)

问题在于,您将所有索引附加到一个String,将所有元素附加到另一个,然后连接两个。

相反,请尝试构建一个String(并记住使用StringBuffer / StringBuilder,因为它比String连接更有效率:

public String toString() {
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < Groups.length; i++) {
    sb.append(i+1).append('(').append(Groups[i]).append(')');
  }
  return sb.toString();
}

答案 1 :(得分:0)

您应该使用:

// int[] Groups = {10, 23, 29}; in the constructor

public String toString()
{
    String tempStringB = "";

    for(int i = 0; i < Group.length;i++)
    {
       tempStringB = (i==0?"":" ")+ tempStringB + (i+1) + " "+ "(" + Groups[i] + ")";
    }
    return tempStringB;
} 

但是使用StringBuffer的方式会很聪明,特别是如果你的小组变大了